ExecuteReader上的Strange NullReferenceException

时间:2011-08-08 13:22:28

标签: c# db2 nullreferenceexception datareader

当我尝试执行下面的代码时,会在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视图正确执行,连接字符串正确且数据库类型正常... 作为每一个静态方法,没有别的东西必须设置......我确定它是'愚蠢的,但无法弄清楚是什么。

1 个答案:

答案 0 :(得分:0)

该死的,从V5R3到V5R4的更新已经解决了这个问题。一个简单的15分钟更新解决了3天的头部撞击。很高兴做出贡献:)