2013-09-24 3 views
0

Я получаю исключение System.NullReferenceException, когда я использую MySqlDataReader после того, как я вставил или обновил что-то в базе данных.MySqlDataReader NullReferenceException после обновления

Вот мой код:

protected void Page_Load(object sender, EventArgs e) 
{ 
    using (var conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["mysqlconn"].ConnectionString)) 
     { 
      conn.Open(); 
      using (MySqlCommand comm = conn.CreateCommand()) 
      { 
       comm.CommandText = "UPDATE zs_orders SET orderNo = @orderNo, firstSent = @firstSent WHERE ID = @id"; 
       comm.Parameters.AddWithValue("orderNo", "dasda"); 
       comm.Parameters.AddWithValue("firstSent", DateTime.Now); 
       comm.Parameters.AddWithValue("id", Convert.ToInt32(3)); 
       comm.ExecuteNonQuery(); 
       comm.Cancel(); 
       comm.Dispose(); 
      } 
      conn.Close(); 
     } 


     using (var myConn = new MySqlConnection(ConfigurationManager.ConnectionStrings["mysqlconn"].ConnectionString)) 
     { 
      myConn.Open(); 
      using (MySqlCommand cmd = new MySqlCommand("select * from zs_customers;", myConn)) 
       { 
        using (MySqlDataReader dr = cmd.ExecuteReader()) 
        { 
         while (dr.Read()) // << Error 
         { 
          //.... 
         } 
         dr.Close(); 
         myConn.Close(); 
        } 
       } 
     } 
} 

А вот ошибка:

System.NullReferenceException – Object reference not set to an instance of an object.

Row 45: using (MySqlDataReader dr = cmd.ExecuteReader()) 
Row 46: { 
Row 47 >>>:  while (dr.Read()) 
Row 48:   { 
Row 49:    //.... 

[NullReferenceException: Object reference not set to an instance of an object.] zs_test.Page_Load(Object sender, EventArgs e) in c:\Users\JennyJ\skydrive\www\wwwroot\zs-test.aspx.cs:47
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51 System.Web.UI.Control.OnLoad(EventArgs e) +92
System.Web.UI.Control.LoadRecursive() +54
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772

+0

Вы уверены, что ваша таблица 'zs_customers' не пуста? Потому что вы вставляете таблицы 'zs_orders'. И' 3' - это 'int', нет смысла использовать его как' Convert.ToInt32 (3) ' –

+0

Да, он отлично работает, если я ничего не обновляю. – JennieJ

+0

Ошибка также появится, например, если я создаю клиента, а затем перейдите к другой веб-форме со списком клиентов. Кажется, что-то происходит с подключением к db. – JennieJ

ответ

0

Использование if(dr.HasRows) перед чтением данных из SqlDataReader избежать System.NullReferenceException - ссылка на объект не указывает на экземпляр объект.

+0

Я получу ту же ошибку, если добавлю это. Есть соответствующие записи, но я получаю ths nullreferenceexeption, если я обращаюсь к объекту dr. – JennieJ

+0

Если вы выполняете другие события сервера на странице, напишите выше код внутри if (! IsPostBack) {} block. – Mohit

0

Ну, я нашел ошибку ..

Именно эта линия:

   comm.Cancel(); 

Это не должно быть. Глупая ошибка.

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

  • Нет связанных вопросов^_^