在vb.net中使用单个按钮插入或更新

在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

如何在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 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合并示例”。