Я не могу понять, почему я не могу подключиться к своей SQL Server Express LocalDB. У меня постоянно возникают проблемы с моей строкой подключения. Это то, что я пробовал:
Imports System.Data.OleDb
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim conString As String 'Connection string
Dim con As OleDbConnection 'Connecting to your database
Dim Command As OleDbCommand 'Query "What do you want in the database"
'conString = "PROVIDER=System.Data.SqlClient v4.0; Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DatabaseInnlogging.mdf;Integrated Security=True"
'conString = "PROVIDER=SQLOLEDB; Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DatabaseInnlogging.mdf;Integrated Security=True"
'conString = "PROVIDER=System.Data.SqlClient; Data Source=C:\Users\Bruker\source\repos\InnloggingFørsøkv1\InnloggingFørsøkv1\DatabaseInnlogging.mdf;Integrated Security=True"
'conString = "PROVIDER=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Users\Bruker\source\repos\InnloggingFørsøkv1\InnloggingFørsøkv1\DatabaseInnlogging.mdf;Integrated Security=True"
'conString = "PROVIDER=System.Data.SqlClient v4.0; Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DatabaseInnlogging.mdf;Integrated Security=True"
Try
con = New OleDbConnection(conString)
con.Open()
Command = New OleDbCommand("select * from LogInTable where UserID = ? and Password = ?", con)
Dim parm1 As OleDbParameter, parm2 As OleDbParameter
parm1 = Command.Parameters.Add("@UserID", OleDbType.VarChar)
parm2 = Command.Parameters.Add("@Password", OleDbType.VarChar)
parm1.Direction = ParameterDirection.Input
parm2.Direction = ParameterDirection.Input
parm1.Value = Me.TextBox1.Text
parm2.Value = Me.TextBox2.Text
Command.Connection.Open()
Dim reader As OleDbDataReader
If reader.Read = True Then
Me.DialogResult = DialogResult.OK
Else
MsgBox("Invalid UserID or Password")
End If
reader = Command.ExecuteReader
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Я пробовал несколько строк подключения, но ни одна из них не работает.
Но с номером 4 я получил ошибку
Многоэтапная операция OLE DB вызвала ошибки. Проверьте каждое значение состояния OLE DB.
Остальные приводят к ошибке:
провайдер не опознан
Моя другая попытка была с SqlClient
:
Imports System.Data.SqlClient
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim myConn As SqlConnection
myConn = New SqlConnection("Initial Catalog=OutComes; Data Source=localhost;Integrated Security=SSPI;")
'"Data Source = (LocalDB) \ MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DatabaseInnlogging.mdf;Integrated Security=True")
' "Data Source=localhost;Integrated Security=SSPI;")
'Create a Command object.
Dim myCmd As SqlCommand
myCmd = myConn.CreateCommand
myCmd.CommandText = "SELECT UserID, Password FROM LogInTable"
'Open the connection.
myConn.Open()
Dim results As String
Dim myReader As SqlDataReader
myReader = myCmd.ExecuteReader()
'Traverse the DataSet and Display in GUi for Example:
Do While myReader.Read()
results = results & myReader.GetString(0) & vbTab &
myReader.GetString(1) & vbLf
Loop
'Display results.
MsgBox(results)
' Close the reader and the database connection.
myReader.Close()
myConn.Close()
End Sub
Моя ошибка здесь была:
System.Data.SqlClient.SqlException: «При подключении к SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не найден или недоступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен на прием внешних подключений. (поставщик: поставщик именованных каналов, ошибка: 40 — невозможно открыть соединение с SQL Server)
У меня есть одна таблица в моей базе данных SQL Server с двумя столбцами UserID
и password
.
Я был бы очень признателен, если бы кто-то мог указать мне правильное направление здесь. Я прочитал много сообщений на эту тему, но не могу найти, где я ошибаюсь. Моя главная цель здесь — подключиться к моей базе данных.
У меня был установлен сервер sql, но на всякий случай я переустановил его, как вы и планировали. Исходный проект не подключился, и сообщение об ошибке было таким же, как и раньше. Что я забыл сказать в прошлый раз, так это то, что у меня не было проблем с подключением к базе данных с помощью представления таблиц. Добавление источника данных. А затем бросьте и перетащите таблицу на форму. Это было упражнение в том, чтобы делать это вручную, и я не мог приступить к работе.
Поскольку вы новичок, вы можете попробовать некоторые визуальные инструменты, которые помогут вам увидеть более четко, я предлагаю вам попробовать этот подход, это половина пути к вашему решению:
В вашей визуальной студии:
Menu Tools
Connection to database
В диалоге
Data Source :
Microsoft SQL Server (sqlClient)
Server Name :
****
вы должны найти свой сервер здесь, выбрать его, иначе это означает, что у вас проблемы с установкой сервера
Authentification :
Аутентификация Windows
как я вижу в вашем примере, вы не используете идентификатор SQL, так что все в порядке
Connection to database:
Выберите базу данных, которую вы уже создали, если ничего не видно значит вы не создавали или у вас нет прав на доступ
Затем нажмите кнопку Test Connection
если получилось, то нажмите OK
Тогда заходите в свой ToolBox
Data
DataGridView
бросьте это в свою форму
выберите источник данных: внизу вы увидите + Add the data source
нажмите здесь
У вас появится диалог, выберите Database
-> Dataset
->
выберите подключение для передачи данных
вы должны увидеть строку в поле со списком с your server name \ your Database.dbo
Поставьте галочку "Show the connection string saved in the application"
вы ясно увидите свою строку подключения
Далее -> Далее > проверить таблицы
Заканчивать
Если вы застряли в какой-то части, дайте мне знать, чтобы уточнить вас с помощью редактирования
Во-первых, СПАСИБО :), у меня все получилось. Но у меня все еще есть некоторые вопросы. Я начал с нового проекта и сделал локальную sqlDB с одной таблицей. с двумя столбцами «Идентификатор пользователя» и «Пароль». У меня в этой таблице была одна строка с "Админ" и "проход" Я не использовал конструктор таблиц и не добавлял источник данных.
Я следовал вашему описанию в письме и скопировал свою строку подключения в инструменте подключения... Это сработало нормально, и я нашел файл mdf и смог подключиться к нему.
Загрузил форму с сеткой данных и привязал ее к источнику данных. Он работал правильно
Потом попробовал подключиться к БД под новой кнопкой вручную. Я получил это сообщение об ошибке:
System.Data.SqlClient.SqlException:
'Cannot attach file 'C:\Users\Bruker\source\repos\Connect_v2\Connect_v2\bin\Debug\Database1.mdf'
as database 'OutComes
' because this file is already in use for database
'C:\USERS\BRUKER\SOURCE\REPOS\CONNECT_V2\CONNECT_V2\BIN\DEBUG\DATABASE1.MDF''
This was the class:
Imports System.Data.SqlClient
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'Database1DataSet.LogInTable' table. You can move, or remove it, as needed.
Me.LogInTableTableAdapter.Fill(Me.Database1DataSet.LogInTable)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim myConn As SqlConnection
myConn = New SqlConnection("Initial Catalog=OutComes; Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;Connect Timeout=30")
'Create a Command object.
Dim myCmd As SqlCommand
myCmd = myConn.CreateCommand
myCmd.CommandText = "SELECT UserID, Password FROM LogInTable"
'Open the connection.
myConn.Open()
Dim results As String
Dim myReader As SqlDataReader
myReader = myCmd.ExecuteReader()
'Traverse the DataSet and Display in GUi for Example:
Do While myReader.Read()
results = results & myReader.GetString(0) & vbTab &
myReader.GetString(1) & vbLf
Loop
'Display results.
MsgBox(results)
' Close the reader and the database connection.
myReader.Close()
myConn.Close()
End Sub
Я попытался закомментировать событие загрузки, и оно было связано с БД вручную. Это сработало :)
Imports System.Data.SqlClient
Public Class Form1
'Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 'TODO: This line of code loads data into the 'Database1DataSet.LogInTable' table. You can move, or remove it, as needed.
' Me.LogInTableTableAdapter.Fill(Me.Database1DataSet.LogInTable)
'End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim myConn As SqlConnection
myConn = New SqlConnection("Initial Catalog=OutComes; Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;Connect Timeout=30")
'Create a Command object.
Dim myCmd As SqlCommand
myCmd = myConn.CreateCommand
myCmd.CommandText = "SELECT UserID, Password FROM LogInTable"
'Open the connection.
myConn.Open()
Dim results As String
Dim myReader As SqlDataReader
myReader = myCmd.ExecuteReader()
'Traverse the DataSet and Display in GUi for Example:
Do While myReader.Read()
results = results & myReader.GetString(0) & vbTab &
myReader.GetString(1) & vbLf
Loop
'Display results.
MsgBox(results)
' Close the reader and the database connection.
myReader.Close()
myConn.Close()
End Sub
End Class
Это здорово, но мне все еще интересно, почему я получил сообщение об ошибке. Это потому, что адаптер таблицы datagridview поддерживает постоянно открытое соединение с БД. И нельзя ли одновременно иметь несколько открытых соединений?
Я не уверен, что точная причина в том, что вы прикрепили файл mdf для подключения. На мой взгляд, для вашей новой проблемы вы должны пометить это как ответ и сделать еще один пост с этой новой проблемой. возможно, вам помогут другие люди.
И вы уверены, что действительно установили пакет SQL Server Express LocalDB?? Вы скачали его с сайта Microsoft и запустили установку? Последняя ошибка явно указывает на то, что сервер базы данных, к которому вы пытаетесь подключиться, просто отсутствует (например, не установлен). Если вы что-то скачали и установили - что именно вы установили?