来自 .NET Framework 4.6、VS2017 的 DB2 AS400 v7r1 连接
DB2 AS400 v7r1 connection from .NET framework 4.6, VS2017
我是 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);
返回的错误是'The connectionstring property is invalid'
还有一些名为 IBM.Data.Db2
和 IBM.Data.Db.Provider
的其他 nugets,但我没有尝试过。这些似乎适用于 .NET 4.0,但我不确定它们是否适用于 AS400 v7r1。
我尝试过使用 DSDriver 和 VSAI,但无法创建 EF 模型。
你能给我一些建议吗?
我正在使用以下内容:
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...
我是 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);
返回的错误是'The connectionstring property is invalid'
还有一些名为 IBM.Data.Db2
和 IBM.Data.Db.Provider
的其他 nugets,但我没有尝试过。这些似乎适用于 .NET 4.0,但我不确定它们是否适用于 AS400 v7r1。
我尝试过使用 DSDriver 和 VSAI,但无法创建 EF 模型。
你能给我一些建议吗?
我正在使用以下内容:
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...