, когда я пытаюсь выполнить следующий код, в 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: La Référence d'objet n'est pas définie
Вне всякого сомнения. в
Microsoft.Win32.Win32Native.CopyMemoryUni (StringBuilder pdst, IntPtr
psrc, IntPtr sizetcb) в
System.Runtime.InteropServices.Marshal.PtrToStringUni (IntPtr ptr) в
IBM.Data.DB2.iSeries.MPHostCol.setHostColInfo (MpDcHostColumnInfo
dcHostColInfo)
бла-бла-блах, пока не получится строка выше.
Каждый параметр заполнен, запрос выполняется правильно с SQL-представлением, строка подключения верна, а тип базы данных в порядке ...
Как и любой статический метод, больше ничего не нужно устанавливать ... Я уверен, что это что-то глупо, но не могу понять, что.