在vb.net中使用单个按钮插入或更新
如何在vb.net中用一个按钮插入和更新数据库(sql server)中的数据我试过了,但没有得到结果。 这是我的密码在vb.net中使用单个按钮插入或更新,vb.net,Vb.net,如何在vb.net中用一个按钮插入和更新数据库(sql server)中的数据我试过了,但没有得到结果。 这是我的密码 Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click Try Dim reader As SqlDataReader Dim query As String Dim n As Integ
Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click
Try
Dim reader As SqlDataReader
Dim query As String
Dim n As Integer
n = 0
sqlcom1 = New SqlCommand("select * from mydatabase.masters")
sqlcom1.ExecuteReader()
sqlcom = New SqlCommand("select * from mydatabase.masters")
sqlcom.ExecuteReader()
reader = sqlcom1.ExecuteReader
reader = sqlcom.ExecuteReader
sqlcom = New SqlCommand("Update masters SET EmpName=@EmpName, Age=@Age, Address=@Address where Empid=@Empid", conn)
sqlcom.Parameters.Add("@EmpName", SqlDbType.VarChar).Value = TextBox4.Text
sqlcom.Parameters.Add("@Age", SqlDbType.Int).Value = TextBox3.Text
sqlcom.Parameters.Add("@Address", SqlDbType.VarChar).Value = TextBox2.Text
sqlcom.Parameters.Add("@Empid", SqlDbType.Int).Value = TextBox1.Text
sqlcom1 = New SqlCommand("insert into masters(Empid, EmpName, Age, Address) values(@Empid, @EmpName, @Age, @Address)", conn)
sqlcom1.Parameters.AddWithValue("@Empid", TextBox1.Text)
sqlcom1.Parameters.AddWithValue("@EmpName", TextBox4.Text)
sqlcom1.Parameters.AddWithValue("@Age", TextBox3.Text)
sqlcom1.Parameters.AddWithValue("@Address", TextBox2.Text)
conn.Open()
While reader.Read
n = n + 1
End While
If table.Rows.Count = n Then
sqlcom1.ExecuteNonQuery()
ElseIf table.Rows.Count = n + 1 Then
sqlcom.ExecuteNonQuery()
End If
Catch ex As Exception
MessageBox.Show("error" + ex.Message)
End Try
End Sub
使用block可确保即使出现错误,连接对象也会被关闭和释放。 通常我会把注释排成一行,但是代码太乱了,所以不得不把大部分注释移到这里。我希望你能找出它们属于哪里
将Dim读取器设置为SqlDataReader
-未使用
作为字符串的Dim查询
-未使用
Integer
s自动初始化为零
将查询和连接传递给命令的构造函数
连接字符串将告诉SQL Server要使用的数据库。这在查询中不是必需的
显然你想要的只是计数,而不是所有的数据
此查询与sqlcom1完全相同
Dim sqlcom作为新的SqlCommand(“select*from mydatabase.masters”,cn)
sqlcom.ExecuteReader()
你做了两次
reader=sqlcom1.ExecuteReader
不必了,我们已经找到伯爵了
`While reader.Read
n = n + 1
End While`
我假设表是在其他时间填充的数据表。使用count与表中的count进行比较并不是确定命令是Insert还是Update的好方法,但只要数据库和表未与更新数据库的DataAdapter一起使用,它就可以工作
Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click
Try
Dim n As Integer
Using cn As New SqlConnection("Your connection string")
Dim sqlcom1 As New SqlCommand("select Count(*) from masters", cn)
cn.Open()
n = CInt(sqlcom1.ExecuteScalar) 'n is now the number of rows in the database table
Dim sqlcom As New SqlCommand
sqlcom.Parameters.Add("@EmpName", SqlDbType.VarChar).Value = TextBox4.Text
'Age is not a good idea to enter in a database. It changes over time.
'Enter the birth date and calculate the age as needed.
sqlcom.Parameters.Add("@Age", SqlDbType.Int).Value = CInt(TextBox3.Text)
sqlcom.Parameters.Add("@Address", SqlDbType.VarChar).Value = TextBox2.Text
If table.Rows.Count > n Then
'Normally EmpId would be an auto increment (identity) field
'and would NOT be included in an insert.
sqlcom.CommandText = "insert into masters(EmpName, Age, Address) values(@EmpName, @Age, @Address)"
Else
sqlcom.CommandText = "Update masters SET EmpName=@EmpName, Age=@Age, Address=@Address where Empid=@Empid"
sqlcom1.Parameters.Add("@Empid", SqlDbType.Int).Value = CInt(TextBox1.Text)
End If
sqlcom.ExecuteNonQuery()
End Using
Catch ex As Exception
MessageBox.Show("error" + ex.Message)
End Try
End Sub
再想一想,忘了这件事吧。使用DataGridView和DataAdapter。然后您可以使用Update,它将进行更新、插入和删除。请正确设置代码格式\“但不获取结果”。那描述太模糊了。请准确解释发生了什么,以及它与您预期的不同之处。另外,在这里提问之前,您必须先调试代码。如果您不知道如何在调试器中设置断点和单步执行代码,您现在应该研究一下。我想在表中插入数据,并使用vb.net中的相同按钮更新数据。我使用sql server作为数据库。您需要的谷歌搜索词是“t-sql合并示例”。