Возможно запросить AS400 DB2 через VB.Net без PRG?
-
21-12-2019 - |
Вопрос
Прошло несколько дней исследования и попытка понять это соло, я мог бы действительно использовать некоторую помощь.
Я пытаюсь запрашивать базу данных 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