【发布时间】:2017-10-21 18:40:16
【问题描述】:
尝试在另一台机器上启动我的 Windows 应用程序时出现以下错误。
“发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。找不到服务器或 无法访问。验证实例名称是否正确,并且 SQL Server 配置为允许远程连接。 (提供者:命名 Pipes Provider,错误:40 - 无法打开与 SQL 的连接 服务器)。”
在我的机器上,该应用程序正在运行,但在用户的机器上却无法运行。无论是在 stackoverflow 还是其他网站中,我都尝试了很多解决方案,但没有一个能帮助我解决这个问题。数据库是本地的,所以我没有使用任何服务器或类似的东西。奇怪的是,登录表单实际上正在工作,但其他表单不起作用。这是来自无法使想法更接近的一种形式的代码。我希望你能帮助我解决这个问题,因为我真的没时间了。我正在使用 VB.NET 和 SQL SERVER。
Imports System.Data
Imports System.Data.SqlClient
Public Class Form13
'Dim cmd As New SqlCommand
Dim cn As New SqlConnection("database=Leave_manager;server=(local);integrated security=true")
Private Sub Form13_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: cette ligne de code charge les données dans la table 'Leave_managerDataSet1.Addemployees'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
Me.AddemployeesTableAdapter.Fill(Me.Leave_managerDataSet1.Addemployees)
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Try
cn.Open()
Dim sqlcmd As New SqlCommand("select Fname,Lname from Addemployees where ID = '" & ComboBox1.Text & "'", cn)
Dim myreader As SqlDataReader
myreader = sqlcmd.ExecuteReader()
myreader.Read()
If myreader.HasRows Then
TextBox2.Text = myreader.Item("Fname").ToString
TextBox1.Text = myreader.Item("Lname").ToString
End If
cn.Close()
Catch ex As Exception
MessageBox.Show("Error while connecting to SQL Server." & ex.Message)
Finally
cn.Close()
End Try
Try
cn.Open()
Dim sqlcmd As New SqlCommand("SELECT Leave_num FROM Addemployees WHERE ID='" & ComboBox1.Text & "'", cn)
Dim myreader1 As SqlDataReader
myreader1 = sqlcmd.ExecuteReader()
myreader1.Read()
If myreader1.HasRows Then
TextBox6.Text = myreader1.Item("Leave_num").ToString
End If
cn.Close()
Catch
MessageBox.Show("Error!", "exit", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
TextBox1.Clear()
TextBox2.Clear()
TextBox3.Clear()
TextBox4.Clear()
TextBox6.Clear()
Me.CheckBox1.Checked = False
Me.Hide()
Form6.Show()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If MessageBox.Show("Do you really want to Restore is record?", "Record", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = Windows.Forms.DialogResult.Yes Then
Try
cn.Open()
Dim cmd As New System.Data.SqlClient.SqlCommand
Dim RA As Integer
cmd = New SqlCommand("update Addemployees set Leave_num ='" & TextBox3.Text & "' where ID='" & ComboBox1.Text & "' ", cn)
cmd.Connection = cn
RA = cmd.ExecuteNonQuery()
MessageBox.Show("Process successful!", "Save", MessageBoxButtons.OK, MessageBoxIcon.Information)
cn.Close()
Catch
MessageBox.Show("Error!", "exit", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If MessageBox.Show("Do you really want to Restore all records?", "Record", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = Windows.Forms.DialogResult.Yes Then
If Me.TextBox4.ReadOnly = False Then
Try
cn.Open()
Dim cmd2 As New System.Data.SqlClient.SqlCommand
Dim Rb As Integer
cmd2 = New SqlCommand("update Addemployees set Leave_num ='" & TextBox4.Text & "'", cn)
cmd2.Connection = cn
Rb = cmd2.ExecuteNonQuery()
MessageBox.Show("Process successful!", "Save", MessageBoxButtons.OK, MessageBoxIcon.Information)
cn.Close()
Catch
MessageBox.Show("Error!", "exit", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
ElseIf Me.TextBox4.ReadOnly = True Then
MessageBox.Show("Error!, please select selectr all option", "exit", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
TextBox1.Clear()
TextBox2.Clear()
TextBox3.Clear()
TextBox4.Clear()
TextBox6.Clear()
Me.CheckBox1.Checked = False
End Sub
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
If Me.CheckBox1.Checked = True Then
Me.TextBox4.ReadOnly = False
ElseIf Me.CheckBox1.Checked = False Then
Me.TextBox4.ReadOnly = True
End If
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
结束类`
【问题讨论】:
-
你需要对sql连接字符串持怀疑态度。错误在连接中,并且与连接字符串有关(假设 SQL 可用并且您似乎已经证明了连接。)
-
是的,我在这个阶段完全迷失了。我该怎么办
-
@OuallaWalid 我们无法从这里猜测,但是您必须检查您的 sql 连接字符串,还要检查服务器是否正在运行。
-
我已经检查了很多次连接字符串以及服务器,但一切都是正确的
-
我建议您创建一个新表单,只需精简到连接到 SQL 所需的内容,以证明其有效或使其正常工作。然后从那里构建。如果需要,从工作表单中的连接代码开始。这可能会突出正在发生的事情。
标签: sql-server vb.net