使用什么提供商?

What Provider to use?

我正在努力使用 OLEDB 从 VB.NET 应用程序连接到 SQL 数据库。我通常使用 ADO.NET 或 ODBC for Oracle 连接到数据库。我使用的连接字符串如下:

Provider=SQLOLEDB;User ID=myUser;Password=myPassword;Initial Catalog=database;Data Source=server;

我得到的错误是:"Additional information: Cannot open database 'database' requested by the login. The login failed."

数据库、用户名和密码绝对正确。我已通过登录 SQL Studio Manager 并成功连接到数据库来确认这一点。

所以一定是Provider不正确。我尝试了几个不同的供应商,例如SQLOLEDB.1。我如何准确找出要使用的提供商?

不要为 OLEDB 而烦恼。由于您使用的是 SQL 服务器,因此只需为 SQL 服务器使用内置的 .NET Framework 数据提供程序 (list of .NET data providers)。

事实上,您甚至不必担心连接字符串语法是否正确。您也可以为此使用内置的连接字符串生成器。

这里有一些示例代码可以帮助您入门:

Imports System.Data.SqlClient

// ...

Dim connStringBuilder As SqlConnectionStringBuilder = New SqlConnectionStringBuilder()
connStringBuilder.DataSource = "myservername"
connStringBuilder.UserID = "myusername"
connStringBuilder.Password = "mypassword"
connStringBuilder.InitialCatalog = "mydatabase"

Using conn As SqlConnection = New SqlConnection(connStringBuilder.ToString())
    conn.Open()

    Using cmd As SqlCommand = New SqlCommand("SELECT mycol FROM MyTable", conn)
        Using reader As SqlDataReader = cmd.ExecuteReader()
            Do While reader.Read()
                Console.WriteLine("Managed to fetch: {0}", reader("mycol"))
            Loop
        End Using
    End Using
End Using

我重新启动了服务器,连接字符串问题已解决。我会删除这个问题,但有其他用户的回答。