1

我在 Windows 7 x64 机器上运行 Visual Studio Developer Preview 2011。

我刚开始学习 C#,但在连接数据库时遇到了困难。我使用 MS Access 创建了一个数据库,并使用该Connect to a Database选项创建了一个连接。

这是连接字符串

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\USER\Documents\BlankDB.mdb

我正在关注本教程

我将变量添加masterConnectionStringProject Settings并使用连接字符串的值对其进行初始化。

程序编译但在运行时出现以下错误

System.Data.dll 中出现“System.ArgumentException”类型的第一次机会异常

附加信息:不支持关键字:“提供者”。在此之后程序终止。

如果我从字符串中删除提供程序部分,则会引发以下异常。

附加信息:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。
服务器未找到或无法访问。
验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。
(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)

我已经尝试了一段时间,这真的很令人沮丧。是否有其他更简单的方法可以在 C# 中连接到数据库?是否可以从 Visual Studio 中创建 SQL Server 数据库?

这是我用来连接数据库的代码。

 static void TryCreateTable()
        {
            using (SqlConnection con = new SqlConnection(DogsDB.Properties.Settings.Default.BlankDBConnectionString))
            {
                con.Open();
                try
                {
                    using (SqlCommand command = new SqlCommand("CREATE TABLE Dogs1 (Weight INT, Name TEXT, Breed TEXT)", con))
                    {
                        command.ExecuteNonQuery();
                    }
                }
                catch
                {
                    Console.WriteLine("Table couldn't be created.");
                }
            }
        }
4

3 回答 3

4

您正在学习 sql server 的教程。要连接到您的 MS Access 数据库,您的连接代码应如下所示:

OleDbConnection sqlConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\USER\\Documents\\BlankDB.mdb");

确保反斜杠被转义。

然后你可以做

try{
  sqlConn.Open();
  OleDbCommand command = new OleDbCommand("CREATE....", sqlConn);
  command.CommandType = CommandType.Text;
  command.ExecuteNonQuery();
}
catch(InvalidOperationException ioe)
{
    ....
}
catch(OleDbException ode)
{
    ....
}
sqlConn.Close();
于 2012-01-26T19:40:44.010 回答
3

这是一个OleDB连接字符串,而不是 SQL Server 连接字符串。
您需要将其与OleDbConnection.

如果你想使用 SQL Server 而不是 Access,你可以使用 SQL Server Management Studio 或 VS 的 Server Explorer 创建一个数据库。
然后,您可以使用 SQL Server 连接字符串连接到它。

您可以在此处查看示例连接字符串。

于 2012-01-26T19:26:52.323 回答
1

您收到此错误的原因有多种。

1)参考网站是使用SQL Server数据库而不是Access。2) 您在 x64 操作系统上运行,这意味着以下情况为真。

The Microsoft OLE DB Provider for Jet and the Jet ODBC driver are available in 32-bit versions only. You can't run them in 64 bit mode. 

For example, you have a 32-bit application that uses the Microsoft OLE DB Provider for Jet. If you migrate the application to run in the

在 64 位模式下,应用程序无法使用 Microsoft OLE DB Provider for Jet 连接到数据源。出现此问题的原因是应用程序需要 64 位版本的 Microsoft OLE DB Provider for Jet。另请注意,网站可以是 32 位或 64 位应用程序。

所以解决方案是使用以下内容:

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13255

如果您在 64 位环境中运行程序并需要使用 jet 打开访问、excel 或文本文件,则有几个选项可以完成这项工作。•以 WoW64 模式运行程序(在 64 位系统上模拟 32 位)。这将使 32 位驱动程序工作。•如果应用程序是托管在 IIS 7 上的 Web 应用程序,您可以选择将网站应用程序池配置为在 32 位模式下运行。•随着新的Office 2010,将会有新的驱动程序,“2010 Office System Driver”,将提供32位和64位版本的展位。您可以使用这些驱动程序让您的应用程序连接到 64 位环境中的 Access、Excel 和文本文件,利用新的 64 位驱动程序。提供程序名称为“Microsoft.ACE.OLEDB.14.0”。您无需购买或安装 Office 套件,

如果您需要额外的帮助,您必须提供您使用的代码。

在研究并安装链接库之后,您应该更新问题中的代码。

于 2012-01-26T19:43:09.290 回答