PRGなしでvb.net経由でAS400 DB2を照会することが可能ですか?
-
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デーモンです。 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アクセス機能のいくつかは、充電可能な、EX 5250エミュレーションであり、あなたはライセンスを購入した必要があります。データアクセスプロバイダはそうではありません。
IBM I Accessパッケージに含まれているProgrammers Toolkit "
として知られるドキュメントのコレクションです。そのツールキットから.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プロバイダは、マイクロソフトのエンティティフレームワーク(EF)をサポートしていません。 EFサポートが必要な場合は、DB2 Connect
の支払いが必要です。