2015-03-24 2 views
1

когда-либо я пытаюсь выполнить запрос на Informix с помощью C#, это дает мне эту ошибку {"Object reference not set to an instance of an object."}IfxDataReader возвращение нулевой

Я использую:

  • Windows 7 Ultimate 64бит
  • VS2013 Непревзойденная
  • Informix Client SDK3.50.FC9.WIN

вот мой код;

string ConnectionString = "Blah;" + "Service=sqlexec;" + "Server=Blah;" + "Database=base004;" + "Uid=me;" + "Pwd=pw;"; 
IfxConnection conn = new IfxConnection(ConnectionString); 
conn.ConnectionString = ConnectionString; 
try 
{ 
    string resql = "select * from table";     
    try 
    { 
     conn.Open(); 
     MessageBox.Show("Connection open"); 
     IfxCommand rq = new IfxCommand(resql, conn); 
     IfxDataReader dr = rq.ExecuteReader(); 
     while (dr.Read()) 
     { 
      string a = dr.GetString(0); 
      int b = dr.GetInt32(1); 
      string c = dr.GetString(2); 
     } 
    } 
    catch (IfxException ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
    conn.Close(); 
} 
catch (IfxException ex) 
{ 
    MessageBox.Show(ex.Message); 
} 
+2

Как не связанная обратная связь: Я ожидаю, что 'conn',' rq' и 'dr' все' IDisposable', и должны * all * использовать 'using' операторы –

+1

@MarcGravell И да, есть использование IBM.Data .Informix; – faidam

+0

@faidam нет, вы меня неправильно поняли; 'using IBM.Data.Informix' является директивой * *, а не оператором * *; Я имею в виду: 'using (IfxConnection conn = new IfxConnection (ConnectionString)) {... вложенный код здесь ...}' –

ответ

1

Так что проблема, я думаю, была версией Framework. Я понизился до 2.0 .net framework, и он сработал. Я пробовал это на двух серверах, и все в порядке! Я также изменил CSDK, я пошел от 3.5 до 4.1

@MarcGravell спасибо вам!

Смежные вопросы