Database 错误对象引用未设置为vb中对象的实例
我有个问题。运行项目时,单击“保存”按钮后,将显示此错误消息 以下是项目代码Database 错误对象引用未设置为vb中对象的实例,database,vb.net,sqlclient,Database,Vb.net,Sqlclient,我有个问题。运行项目时,单击“保存”按钮后,将显示此错误消息 以下是项目代码 Imports System.Data.SqlClient 公共类frmAddNewStaffAdmin Dim con As SqlClient.SqlConnection Dim dbSource As String Dim cmd As SqlClient.SqlCommand Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e A
Imports System.Data.SqlClient
公共类frmAddNewStaffAdmin
Dim con As SqlClient.SqlConnection
Dim dbSource As String
Dim cmd As SqlClient.SqlCommand
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Try
If Len(Trim(cboRole.Text)) = 0 Then
MessageBox.Show("Please select user type", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
cboRole.Focus()
Return
ElseIf Len(Trim(txtStaffID.Text)) = 0 Then
MessageBox.Show("Please enter Staff ID", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
txtStaffID.Focus()
Return
ElseIf Len(Trim(txtStaffName.Text)) = 0 Then
MessageBox.Show("Please enter Staff Name", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
txtStaffName.Focus()
Return
ElseIf Len(Trim(txtUsername.Text)) = 0 Then
MessageBox.Show("Please enter Username", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
txtUsername.Focus()
Return
ElseIf Len(Trim(txtPassword.Text)) = 0 Then
MessageBox.Show("Please enter Password", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
txtPassword.Focus()
Return
End If
dbSource = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\HMS.mdf;Integrated Security=True;User Instance=True"
con = New SqlConnection(dbSource)
con.Open()
Dim sql As String = "INSERT INTO [User] ([Staff_ID], [Staff_Role], [Staff_Name], [Username], [Password]) VALUES (@StaffID, @Role, @StaffName, @Username, @Password) "
cmd.Connection = con
cmd.ExecuteNonQuery()
cmd.Parameters.AddWithValue("@Staff_ID", txtStaffID.Text)
cmd.Parameters.AddWithValue("@Role", cboRole.Text)
cmd.Parameters.AddWithValue("@StaffName", txtStaffName.Text)
cmd.Parameters.AddWithValue("@Username", txtUsername.Text)
cmd.Parameters.AddWithValue("@Password", txtPassword.Text)
cmd = New SqlCommand(sql)
MessageBox.Show("Successfully saved", "Record", MessageBoxButtons.OK, MessageBoxIcon.Information)
con.Close()
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
Me.Hide()
frmStaffAdmin.Show()
End Sub
末级您的代码顺序不正确。在初始化之前使用SqlCommand,当然这会导致上述错误
dbSource = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\HMS.mdf;Integrated Security=True;User Instance=True"
con = New SqlConnection(dbSource)
con.Open()
Dim sql As String = "INSERT INTO [User] ([Staff_ID], [Staff_Role], [Staff_Name], [Username], [Password]) VALUES (@StaffID, @Role, @StaffName, @Username, @Password) "
cmd = New SqlCommand(sql)
cmd.Connection = con
cmd.Parameters.AddWithValue("@StaffID", txtStaffID.Text)
cmd.Parameters.AddWithValue("@Role", cboRole.Text)
cmd.Parameters.AddWithValue("@StaffName", txtStaffName.Text)
cmd.Parameters.AddWithValue("@Username", txtUsername.Text)
cmd.Parameters.AddWithValue("@Password", txtPassword.Text)
cmd.ExecuteNonQuery()
MessageBox.Show("Successfully saved", "Record", MessageBoxButtons.OK, MessageBoxIcon.Information)
con.Close()
在第一次使用之前移动了SqlCommand的初始化,并将ExecuteOnQuery作为最后一条指令移动引发异常的行是什么?那一行的什么参考是
无
?它很可能是点之前的某个东西,虽然不能保证是。我做断点。更改命令后,错误从cmd.ExecuteNonQuery()行开始。我得到这个错误“必须在”@StaffID处声明标量变量”“参数占位符是@StaffID
,参数名称是@Staff\u ID
,它们必须相同。”。应答更新数据已成功保存,但未插入数据库中的数据。为什么?tq回答我的问题如果数据被插入或没有插入,你看起来怎么样?是否在Visual Studio中使用服务器资源管理器窗口?是。我在visual studio中使用基于服务器的数据库。我从数据连接>HMS.mdf>表>用户>右键单击>显示表数据中查找数据