2013-10-06 125 views
1

我正在創建數據庫應用程序;與MS Access數據庫文件。 所發生的一切是正確插入,但不是電話號碼。 當輸入一個電話號碼我正在工作的應用程序拋出一個異常。不能將電話號碼插入數據庫(MS Access文件)

我已經仔細檢查了我的編碼和我的數據庫,並找不出爲什麼會引起這個問題。 這是代碼的一部分。

private void btn_Save_Click(object sender, EventArgs e) 
    { 
     { 
      try 
      { 
       OleDbCommand DBcmd = new OleDbCommand(); 
       DBcmd.CommandType = CommandType.Text; 
       DBcmd.CommandText = "INSERT INTO tbl_ClientInfo (FirstName, LastName, Address, ZipCode, City, State, Country, Language, PhoneNr, MobileNr)" + "VALUES (@FirstName, @LastName, @Address, @ZipCode, @City, @State, @Country, @Language, @PhoneNr, @MobileNr)"; 
       DBcmd.Parameters.AddWithValue("@FirstName", txt_FirstName.Text); 
       DBcmd.Parameters.AddWithValue("@LastName", txt_LastName.Text); 
       DBcmd.Parameters.AddWithValue("@Address", txt_Address.Text); 
       DBcmd.Parameters.AddWithValue("@ZipCode", txt_ZipCode.Text); 
       DBcmd.Parameters.AddWithValue("@City", txt_City.Text); 
       DBcmd.Parameters.AddWithValue("@State", txt_State.Text); 
       DBcmd.Parameters.AddWithValue("@Country", ComboBox_Countries.SelectedItem); 
       DBcmd.Parameters.AddWithValue("@Language", comboBox_Languages.SelectedItem); 
       DBcmd.Parameters.AddWithValue("@PhoneNr", txt_PhoneNr.Text); 
       DBcmd.Parameters.AddWithValue("@MobileNr", txt_MobileNr.Text); 


       DBcmd.Connection = DBconnection; 
       DBconnection.Open(); 

       DBcmd.ExecuteNonQuery(); 

       DBconnection.Close(); 

      catch (Exception ex) 
      { 
       System.IO.StreamWriter file = new System.IO.StreamWriter(@"d:\test.txt"); 
       file.WriteLine(ex); 

       file.Close(); 
      } 
     } 
    } 

預先感謝

回答

3

LANGUAGE是在MS-接入噴氣一個reserved keyword。您需要將其封裝在方括號內

DBcmd.CommandText = "INSERT INTO tbl_ClientInfo (FirstName, LastName, Address, ZipCode, " + 
        "City, State, Country, [Language], PhoneNr, MobileNr)" + 
        "VALUES (@FirstName, @LastName, @Address, @ZipCode, " + 
        "@City, @State, @Country, @Language, @PhoneNr, @MobileNr)"; 

如果仍有可能,建議更改該列名稱。每當你使用這張桌子時,你總會發現自己陷入困境。

+1

這很有道理,並立即解決了我的問題。我完全忘了還有一些「保留」字樣。 我已經在這裏待了好幾個小時,想要了解這麼簡單的事情......謝謝史蒂夫! – Richard

0

您刪除您都拿到例外,它是:

System.InvalidOperationException: The connection was not closed. The connection's current state is open 

的DbConnection是一個變量作用域這種方法之外,是否正確?異常意味着你已經在其他地方打開了這個連接,並且還沒有關閉它,所以你不能再打開它。你應該確保你正在關閉並正確處理你的連接,或者在你發佈的代碼中檢查連接的狀態,如果它已經打開,不要試圖重新打開它。

+0

是的我編輯(刪除例外),因爲我最初發布的例外不是我以前得到的例外。 (對不起) 現在問題已修復。 感謝您的回覆。 – Richard