当我尝试执行下面的代码时,会在ExecuteReader上引发NullReferenceException:
static public IDataReader executeReader(string query, string connectionString, string databaseType)
{
switch(databaseType)
{
case "SqlServer":
//stuff for Sql Server
case "DB2":
iDB2Connection myConnectionDB2 = new iDB2Connection(connectionString);
iDB2Command sqlCommandDB2 = new iDB2Command(query, myConnectionDB2);
sqlCommandDB2.CommandTimeout=0;
try
{
sqlCommandDB2.Connection.Open();
***The exception is raised here...***
return sqlCommandDB2.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception e)
{
sqlCommandDB2.Dispose();
myConnectionDB2.Close();
throw new Exception("Error in DBHelper:ExeSQL()-> " + e.ToString());
}
default:
//stuff for Oracle
}
}
以下是邮件例外:
System.NullReferenceException:Laréférenced'objetn'estdisdéfinie àuneinstance d'un objet。在 Microsoft.Win32.Win32Native.CopyMemoryUni(StringBuilder pdst,IntPtr psrc,IntPtr sizetcb)at System.Runtime.InteropServices.Marshal.PtrToStringUni(IntPtr ptr)at IBM.Data.DB2.iSeries.MPHostCol.setHostColInfo(MpDcHostColumnInfo dcHostColInfo) blahblahblah直到上面的行。
每个参数都填满,查询使用SQL视图正确执行,连接字符串正确且数据库类型正常... 作为每一个静态方法,没有别的东西必须设置......我确定它是'愚蠢的,但无法弄清楚是什么。
答案 0 :(得分:0)
该死的,从V5R3到V5R4的更新已经解决了这个问题。一个简单的15分钟更新解决了3天的头部撞击。很高兴做出贡献:)