如何使用VB连接到SQL Server?

时间:2010-05-18 17:05:23

标签: sql-server vb.net connection-string database-connection

我正在尝试从VB连接到SQL服务器。跨越网络的SQL服务器使用我的Windows登录进行身份验证。

我可以使用以下python代码访问服务器:

import odbc
conn = odbc.odbc('SignInspection')
c = conn.cursor()
c.execute("SELECT * FROM list_domain")
c.fetchone()

此代码工作正常,返回SELECT的第一个结果。但是,我一直在尝试在VB中使用SqlClient.SqlConnection,它无法连接。我尝试了几种不同的连接字符串,但这是当前的代码:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim conn As New SqlClient.SqlConnection
    conn.ConnectionString = "data source=signinspection;initial catalog=signinspection;integrated security=SSPI"
    Try
        conn.Open()
        MessageBox.Show("Sweet Success")
        ''#Insert some code here, woo
    Catch ex As Exception
        MessageBox.Show("Failed to connect to data source.")
        MessageBox.Show(ex.ToString())
    Finally
        conn.Close()
    End Try

End Sub

它失败了,它给了我一个错误,上面写着“发生与网络相关或特定于实例的错误......(提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)< / p>

我很确定这是我的连接字符串,但我发现的任何内容都没有给我任何我需要使用的实例(server = mySQLServer不是一个可靠的例子)。

谢谢! -Wayne

5 个答案:

答案 0 :(得分:3)

查看connectionstrings.com样本。看起来在你的python示例中,你是通过ODBC访问数据库。

您正在使用的字符串是与内置的.NET SQL Server数据库提供程序连接,因此您需要使用ODBC连接字符串或将数据源更改为实际的服务器名称(如果没有其他实例)或servername / instance名。

答案 1 :(得分:3)

您正在使用ODBC DSN作为SqlClient服务器名称。这不会起作用。您必须使用SqlClient连接字符串,对于SqlClient,DataSource属性是服务器名称或SQL Native Client服务器别名(与ODBC DSN不同)。

signinspection替换为SQL Server主机的实际名称。如果是命名实例或侦听非默认端口,则必须同时指定,例如:hostname\instancename

答案 2 :(得分:2)

确定您的服务器和数据库具有相同的名称?

这里有一个链接,允许您生成连接字符串并对其进行测试

http://blogs.msdn.com/dhejo_vanissery/archive/2007/09/07/One-minute-Connection-string.aspx

答案 3 :(得分:1)

好吧,我继续使用ODBC连接。这似乎是我首先想要的。

为了使用ODBC我必须转到http://support.microsoft.com/kb/310985并安装一些文件。按照指示,我想出了以下代码似乎工作正常:

Dim conn As OdbcConnection
conn = New OdbcConnection("DSN=SignInspection")
Dim mystring as String = "SELECT * FROM list_domain"
Dim cmd As OdbcCommand = New OdbcCommand(mystring, conn)
Dim reader As OdbcDataReader
Dim columnCount As Integer
Dim output As String
Dim data as Object() = New Object(10) {}
conn.Open()
MsgBox("Connected!")
reader = cmd.ExecuteReader()
While reader.Read()
    columnCount = reader.GetValues(data)
    output = ""
    For i As Integer = 0 To columnCount - 1
        output = output & " " & data(i).ToString()
    Next
    Debug.WriteLine(output)
End While
conn.Close()

当然我会清理它很多,但我想也许有人最终会找到相同的解决方案,也许他们会在花费太多时间之前看到我的代码。

编。 columsCount - &gt; columCount

答案 4 :(得分:0)

您可能需要查看Microsoft Enterprise Library Data Access Application Block,以便更轻松地连接和支持多个基础数据存储。

成功! =)