2010-07-26 68 views
35

我正在嘗試使用SQL來構建一個.NET Web應用程序來查詢AS400數據庫。這是我第一次遇到AS400。使用.NET連接到AS400

我必須在我的機器(或AS400服務器)上安裝什麼才能連接? (IBM iSeries Access for Windows ??)

連接字符串的組成部分是什麼?

哪裏可以找到使用SQL命令構建數據訪問層的示例代碼?

謝謝。

回答

24

您需要AS400 .Net數據提供程序。查看此處: http://www-03.ibm.com/systems/i/software/access/windows/dotnet/index.html

對於連接字符串樣品,檢查這裏: http://www.connectionstrings.com/as-400

此外,檢查出紅皮書的代碼示例和入門。 http://www.redbooks.ibm.com/redbooks/pdfs/sg246440.pdf

+0

該.NET數據提供程序沒有下載鏈接。這是AS400自帶的嗎? – madatanic 2010-07-26 16:14:30

+1

請參閱此鏈接:http://forums.asp.net/p/1497318/3610952.aspx根據這一點,只要您安裝了IBM iSeries Access for Windows客戶端,就應該位於以下文件夾中:C: \ Program Files \ IBM \ Client Access \ IBM.Data.DB2.iSeries.dll – dcp 2010-07-26 16:23:28

+0

對不起,也許我不清楚我的問題。我在哪裏可以獲得IBM iSeries Access for Windows Client? – madatanic 2010-07-26 18:33:15

0

我正在使用這段代碼,對我工作很好!

Try 
     Dim sqltxt As String = "SELECT * FROM mplib.pfcarfib where LOTEF=" & My.Settings.loteproceso 
     dt1 = New DataTable 
     Dim ConAS400 As New OleDb.OleDbConnection 
     ConAS400.ConnectionString = "Provider=IBMDA400;" & _ 
     "Data Source=192.168.100.100;" & _ 
     "User ID=" & My.Settings.usuario & ";" & _ 
     "Password=" & My.Settings.contrasena 
     Dim CmdAS400 As New OleDb.OleDbCommand(sqltxt, ConAS400) 
     Dim sqlAS400 As New OleDb.OleDbDataAdapter 
     sqlAS400.SelectCommand = CmdAS400 
     ConAS400.Open() 
     sqlAS400.Fill(dt1) 
     grid_detalle.DataSource = dt1 
     grid_detalle.DataMember = dt1.TableName 
    Catch ex As Exception 
     DevExpress.XtraEditors.XtraMessageBox.Show("Comunicación Con El AS400 No Establecida, Notifique a Informatica..", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) 
     Me.Close() 
    End Try 
9

以下是我爲解決問題所做的工作。

安裝了IBM i Access for Windows。不自由

簡稱項目

  • IBM.Data.DB2.iSeries.dll
  • Interop.cwbx.dll(如果數據隊列使用)
  • Interop.AD400.dll下列DLL (如果數據隊列使用)

數據訪問

using (iDB2Command command = new iDB2Command()) 
     { 
      command.Connection = (iDB2Connection)_connection; 
      command.CommandType = CommandType.Text; 
      command.Parameters.AddWithValue(Constants.ParamInterfaceTransactionNo, 1); 
      command.CommandText = dynamicInsertString; 
      command.ExecuteScalar(); 
     } 

連接字符串

<add name="InterfaceConnection" 
connectionString="Data Source=myserver.mycompany.com;User ID=idbname;Password=mypassxxx; 
Default Collection=ASIPTA;Naming=System"/> 

UPDATE

IBM不打算支持的IBM i用於Windows的操作系統Windows以外8.1的訪問。更換產品的IBM i Access客戶端解決方案

IBM i Access Client Solutions

0

我最近發現的NuGet提供的ADO.Net驅動程序。我的電腦上安裝了iSeries客戶端訪問,所以我不能說它是否可以獨立運行,但它確實連接。唯一的問題是我實際上看不到任何表或程序。我認爲可能有一個模式或圖書館,或者我還沒有想到的東西。如果我找到答案,我會發布。同時我仍然可以到達服務器,並使用NuGet適配器編寫大部分代碼。