2012-02-13 26 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