.NET Framework 4.6,VS2017中的DB2 AS400 v7r1连接

时间:2017-07-04 15:08:02

标签: ado.net db2 nuget ibm-midrange

我是DB2的新手,但已启动了一个需要在AS400 v7r1 iSeries中操作DB2数据库的项目。 我试图使用IBM.Data.DB2.iSeries nuget建立连接但没有运气。我在Web.config中的连接字符串看起来像

<add key="ConnectionString" 
 value="Provider=IBMDA400;Password=pwd;User ID=user;Data Source=server_ip_add;Transport Product=Client Access;SSL=DEFAULT;Default Collection=default_schema"/>

我正在使用它:

var myConnection = new iDB2Connection(connectionString);

返回的错误是&#39; connectionstring属性无效&#39; 还有一些名为IBM.Data.Db2IBM.Data.Db.Provider的其他小妞,但我还没试过。这些似乎适用于.NET 4.0,但我不确定它们是否可以与AS400 v7r1一起使用。

我尝试过使用DSDriver和VSAI,但无法创建EF模型。

你能给我一些建议吗?

1 个答案:

答案 0 :(得分:0)

我正在使用以下内容:

<强> App.config中:

<add key="iConnectionString" value="DataSource=MyMachine; UserID=TheUser; 
Password=ThePassword; Naming=System; CheckConnectionOnOpen=true; 
DataCompression=True; Pooling=False" />

使用IBM.Data.DB2.iSeries; ...

<强> 连接:

    private iDB2Connection iCon;
    ...
        if (iCon == null || iCon.State != ConnectionState.Open)
        {
            try
            {
                iCon = new iDB2Connection(ConfigurationManager.AppSettings["iConnectionString"]);
                if (iCon == null) rv = false;
                else
                {
                    iCon.Open();
                    if (iCon == null || iCon.State != ConnectionState.Open) rv = false;
                }
            }
            catch (iDB2CommErrorException ee)
            {
                //var Message = ee.MessageCode + ":" + ee.Message + "\n\rSQL-Status: " + ee.SqlState;
                rv = false;
            }
        }

<强> 插入:

        try
        {
            iDB2Command iCmd = new iDB2Command("INSERT INTO EDIFSP (TFRNUM, FILENAME, PROCSTS, PROCDTTM, SND_ID, RCV_ID, TFRDIR, IFCTYPE, IFCVRSN, MAPNAME, CRTDTTM, TFRDTTM) " +
                                               "VALUES(@TFRNUM, @FILENAME, @PROCSTS, @PROCDTTM, @SND_ID, @RCV_ID, @TFRDIR, @IFCTYPE, @IFCVRSN, @MAPNAME, @CRTDTTM, @TFRDTTM)", iCon);
            iCmd.DeriveParameters();
            iCmd.Parameters["@TFRNUM"].Value = fs.TransferNumber;
            iCmd.Parameters["@FILENAME"].Value = fs.FileName;
            iCmd.Parameters["@PROCSTS"].Value = fs.Status;
            iCmd.Parameters["@PROCDTTM"].Value = DateTime.Now;
            iCmd.Parameters["@SND_ID"].Value = fs.SenderID;
            iCmd.Parameters["@RCV_ID"].Value = fs.ReceiverID;
            iCmd.Parameters["@TFRDIR"].Value = fs.TransferDirection;
            iCmd.Parameters["@IFCTYPE"].Value = fs.InterfaceType;
            iCmd.Parameters["@IFCVRSN"].Value = fs.InterfaceVersion;
            iCmd.Parameters["@MAPNAME"].Value = fs.MappingName;
            iCmd.Parameters["@CRTDTTM"].Value = fs.CreationDateTime;
            iCmd.Parameters["@TFRDTTM"].Value = fs.TransferDateTime;
            iCmd.ExecuteNonQuery();
            iCmd.Dispose();
        }
        catch (iDB2SQLErrorException ee)
        {
            //var Message = ee.MessageCode + ":" + ee.Message + "\n\rSQL-Status: " + ee.SqlState;
        }
        catch (iDB2CommErrorException ee)
        {
            //var Message = ee.MessageCode + ":" + ee.Message + "\n\rSQL-Status: " + ee.SqlState;
        }

希望有所帮助。确保在项目(或路径)中包含IBM.Data.DB2.iSeries.dll和IBM.Data.DB2.iSeries.xml ...