문제

며칠을 지출하고 솔로를 알아 내려고 노력한 후에는 실제로 도움을 청할 수 있습니다.

AS400 프로그램 파일을 사용하지 않고 AS400의 데이터베이스를 .NET에서 직접 쿼리하려고합니다.나는 AS400 관리자에게서 "앞으로 나아가 시도하십시오"이외의 지원이 거의 없었습니다 (나는 내가 여기서 여기에서 수행하지 못했던 것을 말하지 않았습니다.).

CWBX를 정말로 사용하고 싶습니다.아래 코드가 성공적으로 연결되지만 쿼리를 작성하는 방법에 대한 올바른 방향으로 포인터를 사용할 수 있습니다.

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)
.

다른 방법 / 제안에 매우 열려 있습니다.IBM의 사이트와 MSDN에서 가이드를 찾아 as400 프로그램 파일을 사용하지 않고도 직접 쿼리를 수행하지 못했습니다.이게 훨씬 가능하니?

도움이 되었습니까?

해결책

하나의 테이블에서 모든 레코드를 검색하고 행 수를 표시하는 간단한 콘솔 응용 프로그램입니다.

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
.

다른 팁

RemoteCMD 서비스는 기본적으로 RexCD 데몬입니다. DB 테이블을 간단하게 쿼리하려는 경우 왜 그렇게 엉망이되는지 모르겠습니다. IBM i의 통합 DB는 ODBC, OLEDB, JBDC 및 가장 중요한 것은 ADO.NET 제공 업체를 통해 액세스 할 수 있습니다.

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

위에서 언급 한 모든 드라이버는 IBM i 액세스 소프트웨어에서 사용할 수 있습니다. IBM i 액세스 기능 중 일부는 충전식 인 5250 에뮬레이션이 있으며 라이센스를 구입해야합니다. 데이터 액세스 제공 업체가 아닙니다.

IBM i Access 패키지에 포함 된 "프로그래머 툴킷"

이라고하는 설명서 모음입니다.

해당 툴킷에서 .NET 데이터 공급자를 사용하는 예제 :

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

마지막으로 (무료) .NET 공급자는 Microsoft의 Entity Framework (EF)를 지원하지 않습니다. EF 지원이 필요한 경우 DB2 Connect

에 대해 지불해야합니다.

http://www-03.ibm.com/ 소프트웨어 / 제품 / en / db2-connect-family

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top