2010-11-09 74 views
0

我正在製作一個簡單的項目,我從用戶處取得「id」和「name」並將其存儲到Access數據庫中。每當我按下Store按鈕時System.NullReferenceException錯誤就出來了。這裏是代碼System.NullReferenceException在Access數據庫中存儲數據時出錯

我在哪裏聲明Oledpconnection。

public OleDbConnection Con; 
    public Form1() 
    { 
     InitializeComponent(); 
     string connetionString = null; 
     connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Users/Mujahid/Documents/Visual Studio 2008/Projects/ts/ts/ts.accdb"; 
     OleDbConnection Con = null; 
     Con = new OleDbConnection(connetionString); 

     try 
     { 
      Con.Open(); 
      MessageBox.Show("Connection Open ! "); 
      Con.Close(); 

     } 
     catch (Exception) 
     { 
      MessageBox.Show("Can not open connection ! "); 
     } 

    } 

這裏是插入按鈕編程

OleDbCommand cmd = new OleDbCommand(); 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText="insert into ts(ID,Name)" +"Values ('"+textBox1.Text+"','"+textBox2.Text+"')" ; 
     cmd.Connection= Con; 
     Con.Open(); 
     cmd.ExecuteNonQuery(); 
     Con.Close(); 

請幫助!

+3

在什麼情況下執行豁免?該行中是否有空對象? – Dialecticus 2010-11-09 09:33:17

+2

如果您使用的是Visual Studio,然後以調試模式(F5)運行該程序並檢查哪一行導致錯誤。 – KBoek 2010-11-09 09:34:42

+0

插入按鈕的代碼似乎不完整。你在哪裏聲明'Con'(它似乎不是'Form1'類的字段,因爲它在構造函數中是本地的)?最可能的情況發生在'Con.Open'這一行。確保連接對象有效並正確初始化。 – 2010-11-09 09:35:29

回答

3

Con需要是表單構造函數中的表單範圍對象,而不是重新聲明。

public OleDbConnection Con; 
public Form1() 
{ 
    InitializeComponent(); 
    string connetionString = null; 
    connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Users/Mujahid/Documents/Visual Studio 2008/Projects/ts/ts/ts.accdb"; 

    Con = new OleDbConnection(connetionString); 

    try 
    { 
     Con.Open(); 
     MessageBox.Show("Connection Open ! "); 
     Con.Close(); 

    } 
    catch (Exception) 
    { 
     MessageBox.Show("Can not open connection ! "); 
    } 

} 
+0

確定由於錯誤刪除,但新的錯誤實測值 類型「System.Data.OleDb.OleDbException」的未處理的異常出現在system.data.dll 在同一行 「Con.Open();」 – Mujahid 2010-11-09 09:50:11

+0

嗯,我懷疑你的數據庫文件的名稱中有空格,可能需要以某種方式進行分隔。我不知道如何訪問數據庫連接字符串的工作,但你可以試試這個:「Provider = Microsoft.Jet.OLEDB.4.0; Data Source = \」C:/ Users/Mujahid/Documents/Visual Studio 2008/Projects/ts /ts/ts.accdb \ 「」; – Kell 2010-11-09 10:15:55

+0

非常感謝現在,它的作品像一種魅力。 – Mujahid 2010-11-09 10:48:07

1
public OleDbConnection Con; 

...

OleDbConnection Con = null; 

你永遠不會初始化類範圍的連接實例。

+0

我認爲OP可能需要更多的幫助來了解差異 – 2010-11-09 09:41:35

+0

我已經嘗試過沒有更改相同的錯誤。 – Mujahid 2010-11-09 09:46:58