Вопрос

Прошло несколько дней исследования и попытка понять это соло, я мог бы действительно использовать некоторую помощь.

Я пытаюсь запрашивать базу данных AS400 непосредственно из .NET без использования программного файла AS400.У меня очень мало поддержки, кроме «продолжая и попробуй» от администраторов 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. Не уверен, почему вы возитесь с этим, когда вы хотите простым запросом таблицы БД. Встроенная БД в IBM i доступна через ODBC, OLEDB, JBDC и самое главное для вас поставщика ADO.NET.

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

Все вышеупомянутые драйверы доступны в программном обеспечении IBM i Access. Обратите внимание, что, в то время как некоторые из функций доступа IBM I доступа связаны, Ex 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
.

Наконец-то обратите внимание, что поставщик (Free) .NET не поддерживает структуру объекта Microsoft (EF). Если вам нужна поддержка EF, вам придется заплатить за DB2 Connect

http://www-03.ibm.com/ Программное обеспечение / Продукты / EN / DB2-Connect-Family

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top