繁体   English   中英

如何使用VB连接到SQL Server?

[英]How do I connect to SQL Server with VB?

我正在尝试从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的连接)

我很确定这是我的连接字符串,但我发现的任何东西都没有给我任何可靠的例子(server = mySQLServer不是一个可靠的例子)。

谢谢! -Wayne

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

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

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

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

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

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

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

好吧,我继续使用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 - > columCount

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

好成功! =)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM