用于Microsoft Access 2010.accdb的SQL连接字符串

use*_*914 6 c# sql ms-access winforms

我正在使用winforms进行简单的登录表单并在C#中访问2010数据库(.accdb).

我有以下代码,似乎连接字符串是错误的.我试过搜索,发现.Jet是用于访问07 ?? 但这似乎也没有用.我是数据库的业余爱好者(代码来自msdn).我无法理解我应该在这个例子中使用哪个.

访问表名称:哈哈

ID (PK)  |   password
-----------------------
   1     |   testing
        System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\BC207\test.accdb");
        System.Data.SqlClient.SqlCommand comm = new System.Data.SqlClient.SqlCommand();

        comm.CommandText = "SELECT HAHA(*) FROM password";
        comm.CommandType = CommandType.Text;
        comm.Connection = conn;

        conn.Open();

        Object returnValue = comm.ExecuteScalar();
        conn.Close();

        MessageBox.Show((string)returnValue);
Run Code Online (Sandbox Code Playgroud)

编辑:表的名称是密码,我想要获取值的字段是ID.

SQL语句我把它写成: SELECT ID FROM password

是的,表中只有一个记录中只有一个记录作为主键.

无论如何,问题是程序在第一行执行时挂起
-> Keyword not supported: 'provider'.

所以我想我有一个错误的连接字符串..

Sim*_*ier 7

对于Acces数据库(.mdb,.accdb等...),您希望使用OleDbConnection,而不是SqlConnection(SQL Server),如下所示:

conn = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\BC207\test.accdb")
Run Code Online (Sandbox Code Playgroud)

  • @Killercam - OleDbConnection打开...使用OLE DB提供程序的OLE DB连接.它没有假设任何网络或底层系统.它与SQL Server没有任何关系(实际上有一个用于SQL Server的OLE DB提供程序,但我们更喜欢在.NET中编码时使用ADO.NET SqlConnection).可以通过JET驱动程序访问访问文件(.mdb和类似文件),JET驱动程序也是OLE DB提供程序.这就是连接字符串需要Provider密钥的原因.没有ADO.NET Access提供程序.OleDbConnection不是SqlConnection的子类(OleDbProvider不存在). (2认同)

mgg*_*oft 0

comm.CommandText = "SELECT HAHA(*) FROM password";\n
Run Code Online (Sandbox Code Playgroud)\n\n

它\xc2\xb4s 错误。

\n\n

“从哈哈中选择密码”

\n