我想通过引用.dll而不是在服务器上安装任何软件来使用.Net和C#连接到DB2数据库,特别是iSeries版本.目前我们使用IBM.Data.DB2.iSeries.dll,它是作为iSeries访问Windows的一部分安装的.我不想安装所有这些.但显然我没有选项,因为其他提供程序IBM.Data.DB2.dll也要求您安装软件,然后才能根据stackoverflow帖子进行操作:IBM.Data.DB2
无论如何,只需在代码中引用.dll而不是在服务器上安装其他软件,就可以将.Net c#代码连接到DB2?
我知道你可以用Java和JT Open工具箱(http://jt400.sourceforge.net/)来做到这一点.你为什么不能用.Net做这个?
这是我们当前如何使用IBM.Data.DB2.iSeries.dll的基本示例.
String sql = "SELECT 1 FROM SCHEMAX.TABLEX";
System.Data.IDbConnection connection = null;
IDataReader reader = null;
try
{
connection = new iDB2Connection(ConfigurationManager.ConnectionStrings.ConnectionString);
connection.Open();
IDbCommand command = connection.CreateCommand();
command.CommandType = CommandType.Text;
command.CommandText = sql;
reader = command.ExecuteReader();
}
finally
{
try { reader.Close(); } catch (Exception ex) { }
try { connection.Close(); }catch (Exception ex) { }
}
Run Code Online (Sandbox Code Playgroud)
谢谢您的时间,谢谢
我试图弄清楚为什么存储过程调用在SQL Server express查询窗口中需要几秒钟,但是当我运行时,在代码中调用存储过程查询TIMES OUT.我们正在使用sql server 2008.我知道很难在没有看到存储过程的情况下确切地说明发生了什么.我只是希望这是一个已知的问题.任何指导都非常感谢.
在SQL Server express查询窗口中调用"STORED_PROCEDURE_X"并在2秒内运行的SQL查询:
EXEC STORED_PROCEDURE_X '07/01/2010', '07/31/2010', 0, '', 'true','', 'Top 20'
Run Code Online (Sandbox Code Playgroud)
调用"STORED_PROCEDURE_X"和TIMES OUT的代码:
SqlConnection connSQL = null;
SqlCommand sqlCmd = null;
SqlDataAdapter sqlDataAdpater = null;
DataTable returnData = null;
try
{
returnData = new DataTable();
connSQL = new SqlConnection(sqlConnection);
sqlCmd = new SqlCommand("STORED_PROC_X", connSQL);
if (connSQL.State == ConnectionState.Closed)
{
connSQL.Open();
}
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.CommandTimeout = 600;
sqlCmd.Parameters.Add("@StartDate", SqlDbType.NVarChar).Value = "07/01/2010";
sqlCmd.Parameters.Add("@EndDate", SqlDbType.NVarChar).Value = "07/31/2010";
sqlCmd.Parameters.Add("@AuditType", SqlDbType.Int).Value = "0";
sqlCmd.Parameters.Add("@SortBy", SqlDbType.NVarChar).Value = ""; …Run Code Online (Sandbox Code Playgroud)