Pregunta

Después de pasar unos días investigando y tratando de resolver este solo, realmente podría usar algo de ayuda.

Estoy tratando de consultar la base de datos de AS400 directamente desde .NET sin el uso de un archivo de programa AS400.Tengo muy poco apoyo que no sea "Adelante e intente" de los administradores de AS400 (me dicen lo que estoy intentando no se ha hecho aquí antes).

Me gustaría mucho usar CWBX.El código a continuación se conecta con éxito, pero realmente podría usar un puntero en la dirección correcta sobre cómo construir una consulta:

Dim As400 As New AS400System
Dim AsProgram As New cwbx.Program
Dim AsCommand As New cwbx.Command
Dim strQuery As String

As400.Define("AS400")
As400.UserID = ""
As400.Password = ""
As400.IPAddress = ""
As400.Connect(cwbcoServiceEnum.cwbcoServiceRemoteCmd)

If As400.IsConnected(cwbcoServiceEnum.cwbcoServiceRemoteCmd) = 1 Then
    MsgBox("Valid Connection")
Else
    MsgBox("Invalid Connection")
    Exit Sub
End If

'-----------------------------------------------------------------------------------------
'Trying to figure out first if this syntax is correct, and if so... where/how to call it??
'-----------------------------------------------------------------------------------------
strQuery = "SELECT * FROM Library.File WHERE FILEFIELD='Criteria'"
' ---

AsProgram.LibraryName = ""
AsProgram.ProgramName = "" '?
AsProgram.system = As400

'Assuming this will end up being a program call?
'AsProgram.Call()

As400.Disconnect(cwbcoServiceEnum.cwbcoServiceRemoteCmd)

Estoy muy abierto a cualquier otro método / sugerencias.He buscado guías del sitio de IBM, así como a MSDN y, en realidad, no realizan consultas directas sin el uso de un archivo de programa AS400.¿Esto es incluso posible?

¿Fue útil?

Solución

Aquí hay una aplicación de consola simple que recuperará todos los registros de una tabla y mostrará el recuento de filas.

Imports System.Data.OleDb

Module Module1

  Sub Main()
    Dim cmd As New OleDbCommand
    Dim table As String = "YOUR TABLE"
    cmd.CommandText = "SELECT * FROM " & table
    Dim ip As String = "YOUR AS/400 IP GOES HERE"
    Dim user As String = "YOUR USER ID"
    Dim pass As String = "YOUR PASSWORD"
    Dim defaultLib As String = "YOUR LIBRARY"
    Dim connstring As String = "Provider=IBMDA400;" & _
                               "Data Source=" & ip & ";" & _
                               "Force Translate=0;" & _
                               "Default Collection=" & defaultLib & ";" & _
                               "User ID=" & user & ";" & _
                               "Password=" & pass
    cmd.Connection = New OleDbConnection(connstring)
    cmd.Connection.Open()
    Dim dr As OleDbDataReader = cmd.ExecuteReader
    Dim dt As New DataTable
    dt.Load(dr)

    Console.WriteLine(dt.Rows.Count)
    Console.WriteLine("Press ENTER to close...")
    Console.ReadLine()
  End Sub

End Module

Otros consejos

El servicio REMOTECMD es básicamente un demonio REXCD. No estoy seguro de por qué estás jugando con eso cuando quieres una consulta simple una tabla DB. El DB integrado en IBM I es accesible a través de ODBC, OLEDB, JBDC y, lo que es más importante para usted un proveedor ADO.NET.

http:// www-03. ibm.com/systems/power/software/i/access/windows/dotnet.html

Todos los controladores mencionados anteriormente están disponibles en el software IBM I Access. Tenga en cuenta que, si bien algunas de las funciones de IBM I Acce Access son cobrables, la ex 5250 emulación, y debe haber comprado una licencia; Los proveedores de acceso a los datos no lo son.

incluido en el paquete de IBM I Access es una colección de documentación conocida como el "Kit de herramientas de programadores"

Un ejemplo utilizando el proveedor de datos .NET de ese kit de herramientas:

  Public Sub Example()
    Dim cn As iDB2Connection = New iDB2Connection("DataSource=mySystemi;")
      Dim da As New iDB2DataAdapter("select * from mylib.mytable", cn)
  End Sub

Tenga en cuenta que el proveedor (gratuito) .NET no admite el marco de entidades de Microsoft (EF). Si necesita soporte de EF, tendrá que pagar por DB2 Connect

http://www-03.ibm.com/ Software / Productos / EN / DB2-Connect-Family

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top