正在连接到C#中的数据库:ArgumentException



我正在Windows 7 x64计算机上运行Visual Studio Developer Preview 2011。

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

这是连接字符串

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UsersUSERDocumentsBlankDB.mdb

我正在遵循这个教程

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

程序编译,但在运行时我得到以下错误

System.Data.dll 中首次出现"System.ArgumentException"类型的异常

其他信息:不支持关键字:"provider"。在此之后,程序终止。

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

其他信息:
建立与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.");
                }
            }
        }

您正在学习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();

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

如果要使用SQL Server而不是Access,可以使用SQL Server Management Studio或VS的服务器资源管理器创建数据库
然后,您可以使用SQL Server连接字符串连接到它。

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

出现此错误有几个原因。

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 DBJet的提供商。另请注意,网站可以是32位或64位应用程序。

因此,解决方案是使用以下内容:

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

如果您在64位环境中运行程序,并且需要使用jet要打开access、excel或文本文件,有几个选项让它发挥作用。•在WoW64模式下运行程序(在64上模拟32位比特系统)。这将使32位驱动程序正常工作。•如果应用程序是IIS 7上托管的web应用程序,您可以选择配置网站应用程序池以32位模式运行。•随着新Office 2010,将有新的驱动程序问世,"2010 Office System驱动程序",将提供32位和64位版本的展位。您可以使用这些驱动程序让您的应用程序连接到Access,64位环境中的Excel和文本文件,利用新的64位驾驶员。提供程序名称为"Microsoft.ACE.OLEDB.14.0"需要购买或安装Office套件,组件可用作为单独的下载。

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

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

最新更新