2014-10-28 39 views
0

我對這個代碼獲得一個空指針獲得一個NullPointerException在我的代碼

cmd.CommandText = query; 

我傳遞正確的參數。我的更新聲明有什麼問題,我不知道?

(我知道的代碼應該是在嘗試捕捉,但它是故意的,現在,所以不要看那個)

感謝

+0

可能重複[什麼是一個NullReferenceException,如何解決呢?(http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-和我如何修復它) – Dirk 2014-10-28 11:36:34

+3

你是否缺少:cmd = connection.CreateCommand();上面的線? – 2014-10-28 11:36:56

+1

你真的*得到​​一個'NullpointerException'嗎?或者你得到一個'NullReferenceException'? – 2014-10-28 11:38:10

回答

1

異常的直接原因是,你避風港沒有分配cmd的值。 的implementtation也能像那

public void InsertImportantMsg (string msg, DateTime toDay, int visible) { 
    connection.Open(); 

    // Put IDisposable into using... 
    using (var cmd = connection.CreateCommand()) { 
    // Format query to be readble 
    cmd.CommandText = 
     @"UPDATE IMPORTANTMESSAGE 
      SET MESSAGES = :msg, -- <- you don't need apostrophes here... 
       DATETIME = :toDay, 
       LABELVISIBILITY = :visible"; 

    cmd.Parameters.Add(":msg", msg); 
    cmd.Parameters.Add(":toDay", toDay); 

    //TODO: Check this - Oracle doesn't support boolean is SQL 
    cmd.Parameters.Add(":visible", visible); 

    cmd.ExecuteNonQuery(); 
    } 
} 
+1

是的,我知道Oracle不支持布爾(不幸),但注意可見不是一個布爾值,而是一個int:D – States 2014-10-28 11:46:03