2012-02-13 39 views
-3

我有一個關於C#的問題。我用ASP.net編寫了一個函數,當用戶點擊按鈕時,它應該調用這個函數並將sql插入本地數據庫。但是,我不知道爲什麼它不起作用。誰能幫我?C#如何連接本地數據庫(訪問)

我的本地數據庫是Access,它存儲在'App_Data'文件夾下。

protected void button1_Click(object sender, EventArgs e) 
     { 
      SqlConnection myConnection = new SqlConnection(connectionString); 
      // I think the problem is here, but I don't know how to do 

      SqlCommand myCommand = new SqlCommand("INSERT INTO [car] ([carName], [carType]) VALUES (@carName, @carType)", myConnection); 

      SqlParameter carName= myCommand.Parameters.Add("@carName", SqlDbType.Text); 
      SqlParameter carType= myCommand.Parameters.Add("@carType", SqlDbType.Text); 

      carName.Value = carNametb.Text; 
      carType.Value = carTypetb.Text; 

      myConnection.Open(); 
      myCommand.ExecuteNonQuery(); 
      // need to close() the connection where? 

    } 
+0

你應該在SqlCommand對象周圍使用using語句,這會幫助你,因爲它以一種處​​理良好的方式關閉連接,即使有異常。 Hanselman可以解釋這比我更好http://www.hanselman.com/blog/WhyTheUsingStatementIsBetterThanASharpStickInTheEyeAndASqlConnectionRefactoringExample.aspx – 2012-02-13 04:48:03

+0

@李貝克,我嘗試鍵入它,但錯誤發生在myConnection.Open()語句 – 2012-02-13 05:10:58

+0

這聽起來像一個連接字符串問題。 using語句只是讓你的代碼更健壯。 – 2012-02-13 05:16:19

回答

1

您需要聲明連接字符串。

string connectionstring = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;Jet OLEDB:Database Password=MyDbPassword;";

+0

@ZeopDivide,它顯示'異常詳細信息:System.ArgumentException:初始化字符串的格式不符合從索引0開始的規範。我的db名字是汽車,我嘗試car和car.accdb,兩者都不正確。 – 2012-02-13 05:06:20

+0

對於訪問連接字符串,我認爲你需要像這樣格式化:'Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\ mydatabase.mdb; Jet OLEDB:Database Password = MyDbPassword;' – ZeroDivide 2012-02-13 05:08:38

+0

它有錯誤時我運行包含關鍵字提供程序的語句。 – 2012-02-13 05:29:59

1

http://www.connectionstrings.com/有很多關於您可能需要不同的連接字符串的好信息。

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb;Persist Security Info=False; 
+0

我嘗試輸入代碼,但系統不支持'提供者',我刪除它。但是它在執行myConnection.Open()時也有問題。 – 2012-02-13 05:20:02

0

你要通過連接字符串

  1. 轉到服務器資源管理器
  2. 右鍵單擊數據庫,並選擇屬性
  3. 有ü會發現連接字符串
  4. 複製連接字符串和商店connectionstring
+0

是的,我曾經這樣做,但它有關於myConnection.Open()的問題; – 2012-02-13 05:21:55