2010-07-26 203 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适配器编写大部分代码。