2017-07-25 91 views
0

我想從Visual Studio添加數據到C#中訪問。每次點擊按鈕保存數據時都會彈出一條錯誤消息,提示「Microsoft數據庫引擎」。我不知道問題出在哪裏。我粘貼下面的代碼:Microsoft Access引擎

private void btnsave_Click(object sender, EventArgs e) 
    { 

     OleDbConnection conn = new OleDbConnection(); 
     conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\My Monroe\Semester 5\Advanced Programming\Final Project\WindowsFormsApplication1\WindowsFormsApplication1\Final exam .accdb"; 
     string fname = first_NameTextBox.Text; 
     string lname = last_NameTextBox.Text; 
     string snum = sSNTextBox.Text; 
     string city = cityTextBox.Text; 
     string state = stateTextBox.Text; 
     string telnum = telephone__TextBox.Text; 
     OleDbCommand cmd = new OleDbCommand("INSERT into Customers(First Name, Last Name, SSN,City,State,Telephone#)" + " values(@fname,@lname,@snum,@city,@state,@telnum)", connect); 
     cmd.Connection = conn; 
     conn.Open(); 
     if (conn.State == ConnectionState.Open) 
     { 
      cmd.Parameters.Add("@fname", OleDbType.Char, 20).Value = fname; 
      cmd.Parameters.Add("@lname", OleDbType.Char, 20).Value = lname; 
      cmd.Parameters.Add("@snum", OleDbType.Numeric, 20).Value = snum; 
      cmd.Parameters.Add("@city", OleDbType.Char, 20).Value = city; 
      cmd.Parameters.Add("@state", OleDbType.Char, 20).Value = state; 
      cmd.Parameters.Add("@telnum", OleDbType.Numeric, 20).Value = telnum; 
      try 
      { 
       cmd.ExecuteNonQuery(); 
       MessageBox.Show("Data Added"); 
       conn.Close(); 
      } 
      catch (OleDbException ex) 
      { 
       MessageBox.Show(ex.Source); 
       conn.Close(); 
      } 
     } 
     else 
     { 
      MessageBox.Show("Connection Failed"); 
     } 
    } 
+3

你的數據庫文件名真的在它的末尾有空格嗎? '期末考試.accdb' – LarsTech

+0

是的。我剛剛檢查了它的主文件。我似乎無法弄清楚它的問題。整天工作 –

回答

1

有幾件事要檢查。首先改變漁獲到

MessageBox.Show(ex.Message); 

這將是更多的信息!

其次在哪一行錯誤被拋出?第三,請檢查您的連接字符串。當我連接來訪問我的字符串是永遠的形式爲:

@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=DBFullPath\DBName.accdb;Jet OLEDB:Engine Type=5;Persist Security Info=False;" 

如果沒有密碼或

@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=DBFullPath\DBName.accdb;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password = password;" 

,如果有一個。

最後,你真的有電話號碼爲數字嗎?以0開頭的數字或帶有+的國際數字會發生什麼?

編輯

對不起,我想你是誤會我了。我想要你做的是修改catch使其全部讀取:

catch (OleDbException ex) 
{ 
    MessageBox.Show(ex.Message); 
    conn.Close(); 
} 
+0

我一直在使用我的數據庫的連接字符串。我應該改變爲我的形式嗎? –

+0

@AtifUlIslam如果你知道連接字符串的工作,然後離開它。我剛剛通過清單。你有沒有改變MessageBox呢?這將有極大的幫助! –

+0

是的,它改變了從抓到它所說的話,但似乎有一些錯誤,並且VS一直在暗示catch爲解決方案。但主要問題仍然存在。每次我運行應用程序放入我的數據,然後單擊保存按鈕彈出一個消息框,並說「微軟辦公室訪問引擎」 –