Pergunta

Depois de passar alguns dias pesquisando e tentando descobrir isso sozinho, eu poderia realmente usar alguma ajuda.

Estou tentando consultar o As400 do banco de dados diretamente .Net sem o uso de um As400 arquivo de programa.Eu tenho muito pouco apoio de outros que "vá em frente e tente" do As400 administradores (eu estou sendo informado de que eu estou tentando não foi feito aqui antes).

Eu realmente gostaria de usar CWBX.O código abaixo se conecta com êxito, mas eu realmente poderia usar um ponteiro na direção certa sobre como criar uma 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)

Eu sou muito aberto a quaisquer outros métodos/sugestões.Eu olhei para os guias da IBM site bem como do MSDN e nem, na verdade, faz direto consultar sem o uso de um As400 arquivo de programa.Isso é mesmo possível?

Foi útil?

Solução

Aqui é um simples aplicativo de console que irá recuperar todos os registros de uma tabela e mostrar a contagem de linha.

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

Outras dicas

O remotecmd serviço é basicamente um Rexcd daemon.Não sei por que você está mexendo com que quando você quer para simples consulta a uma tabela DB.Integrado de banco de dados no IBM i é acessível através de ODBC, OLEDB, JBDC e, o mais importante para você ADO.NET fornecedor.

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

Todos os acima mencionados drivers estão disponíveis no IBM i do software de Acesso.Observe que enquanto alguns da IBM i recursos de Acesso está disponível, custará, ex emulação 5250, e você deve ter comprado uma licença;os dados de provedores de acesso não são.

Incluído no IBM i de Acesso de pacote é uma coleção de documentação conhecido como o "Programadores Toolkit"

Um exemplo usando o .NET provedor de dados que toolkit:

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

Por último, note que o (gratuito) .NET provedor não oferece suporte da Microsoft Entity Framework (EF).Se você precisa de EF de suporte, você vai ter que pagar para DB2 Connect

http://www-03.ibm.com/software/products/en/db2-connect-family

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top