![](/img/trans.png)
[英]Can't access Local SQL database manually by connection string in VB.NET using Visual Studio
[英]Connection string problem connecting to local SQL database using VB.NET in Visual Studio
我不明白为什么我无法连接到我的 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 服务器时发生与网络相关或特定于实例的错误。 服务器未找到或不可用。 验证实例名称是否正确,以及 SQL 服务器是否配置为接受外部连接。 (提供者:命名管道提供者,错误:40 - 无法打开与 SQL 服务器的连接)
我的 SQL 服务器数据库中有一张表,其中包含两列UserID
和password
。
如果有人能在这里指出正确的方向,我将不胜感激。 我已经阅读了很多关于这个主题的帖子,但似乎找不到我 go 错误的地方。 我的主要目标是连接我的数据库。
由于您是新手,您可以尝试一些可视化工具,它可以帮助您看得更清楚,我建议您尝试这种方法,这是您解决方案的一半:
在您的视觉工作室中:
Menu Tools
Connection to database
在对话框中
Data Source:
Microsoft SQL 服务器(sqlClient)
Server Name:
****
你应该在这里找到你的服务器,select 它,否则这意味着你的服务器安装有问题
Authentification:
Windows 认证
正如我在您的示例中看到的那样,您没有使用 SQL id,所以没关系
Connection to database:
Select 您已经创建的数据库,如果没有看到这意味着您没有创建或您没有访问权限
然后单击按钮Test Connection
如果成功然后单击OK
然后 go 到你的ToolBox
Data
DataGridView
把它放到你的表格 select 数据源:在底部你会看到+ Add the data source
点击它
您将有一个对话框,选择Database
-> Dataset
-> 选择您的数据连接,您应该会在 combobox 中看到一行,其中包含your server name \ your Database.dbo
选中复选框"Show the connection string saved in the application"
你会清楚地看到你的连接字符串
下一步 -> 下一步 > 检查表格
结束
如果您卡在某个部分,请告诉我通过编辑来澄清您
首先,谢谢你:),我让它工作了。 但我还有一些问题。 我从一个新项目开始,并制作了一个本地 sqlDB,其中一个表有两个列“UserID”和“Password”。 我在此表中有一行带有“Admin”和“pass”我没有使用表设计器或添加数据源。
我按照您对信件的描述并在工具连接下复制了我的连接字符串...效果很好,我找到了 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 tableadapter 拥有与数据库的持续打开连接。 并且不可能同时有多个打开的连接?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.