簡體   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