Как мне подключиться к SQL Server с помощью VB? - PullRequest
4 голосов
/ 18 мая 2010

Я пытаюсь подключиться к серверу SQL из VB. SQL-сервер в сети использует мой логин Windows для аутентификации.

Я могу получить доступ к серверу, используя следующий код Python:

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

Этот код работает нормально, возвращая первый результат SELECT. Тем не менее, я пытался использовать SqlClient.SqlConnection в VB, и он не может подключиться. Я пробовал несколько разных строк подключения, но это текущий код:

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) 1009 *

Я вполне уверен, что это моя строка подключения, но ничто из того, что я нашел, не дало мне каких-либо убедительных примеров (server = mySQLServer не является надежным примером) того, что мне нужно использовать.

Спасибо! -Wayne

Ответы [ 5 ]

3 голосов
/ 18 мая 2010

Проверьте connectionstrings.com для образцов.Похоже, что в вашем примере с Python вы обращаетесь к БД через ODBC.

Используемая вами строка соединяется со встроенным поставщиком БД .NET SQL Server, поэтому вам нужно использовать строку подключения ODBC ИЛИ изменить источник данных на фактическое имя сервера (если нет других экземпляров)имя сервера / имя экземпляра.

3 голосов
/ 18 мая 2010

Вы используете ODBC DSN в качестве имени сервера SqlClient. Это не сработает. Необходимо использовать строку подключения SqlClient, а для SqlClient свойством DataSource является имя сервера или псевдоним сервера собственного клиента SQL (который не совпадает с ODBC DSN).

Замените signinspection фактическим именем вашего хоста SQL Server. Если это именованный экземпляр или он прослушивает порт не по умолчанию, вы также должны указать это, например: hostname\instancename

2 голосов
/ 18 мая 2010

Уверены, что ваш сервер и база данных имеют одинаковые имена?

Здесь у вас есть ссылка, которая позволит вам создать строку подключения и проверить ее

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

1 голос
/ 18 мая 2010

Ну, я пошел дальше и использовал соединение 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

0 голосов
/ 18 мая 2010

Возможно, вы захотите взглянуть на Microsoft Enterprise Library Data Access Application Block, чтобы упростить подключение и поддерживать несколько основных хранилищ данных.

Хороших успехов! =)

...