代码在没有ERRoR的情况下工作但更新值不存储在数据库中 ??? 它是更新数据库值的正确方法???
Try
da = New SqlDataAdapter("SELECT * FROM studentdetails where student_id= @id", myConn)
da.SelectCommand.Parameters.AddWithValue("@id", txt_id.Text)
da.Fill(dset, "studentdetails")
If dset.Tables("studentdetails").Rows(0)("student_id") = Convert.ToInt32(txt_id.Text) Then
dset.Tables("studentdetails").Rows(0)("student_name") = txt_name.Text
dset.Tables("studentdetails").Rows(0)("student_branch") = txt_branch.Text
dset.Tables("studentdetails").Rows(0)("student_class") = txt_class.Text
MsgBox("Update Complete")
Else
MsgBox("Record not found")
End If
Catch ex As Exception
MsgBox(ex.Message)
Finally
myConn.Close()
End Try
答案 0 :(得分:2)
首先,如果要更新记录,则无需选择记录。因此我会使用SqlCommand
和相应的update-sql。然后使用它的ExecuteNonQuery
方法。
其次,由于您要将ID转换为Int32
,我假设数据库中列的类型也是int
。但是您将string
参数传递给SelectCommand
的{{1}}。请注意DataAdapter
尝试从值中推断出类型,因此您应该提供正确的类型。
但是,如果您想使用AddWithValue
更新记录,则必须提供SqlDataAdapter
。然后,当您致电UpdateCommand
时,DataTable / DataSet中的所有更改都将写入数据库。
以下是一个示例(同样,由于您可以直接使用DataAdapter.Update
更新,因此选择是多余且效率低下的):
SqlCommand.ExecuteNonQuery
答案 1 :(得分:1)
要在数据库中存储某些内容,您需要一个像这样的INSERT命令
Dim cmdInsert = "INSERT INTO studentdetails (student_id, student_name, " & _
"student_branch, student_class) VALUES " & _
"(@id, @name, @branch, @class)"
Dim cmd = new SqlCommand(cmdInsert,myConn)
cmd.Parameters.AddWithValue("@id",Convert.ToInt32(txt_id.Text)(
cmd.Parameters.AddWithValue("@name", txt_name.Text)
cmd.Parameters.AddWithValue("@branch", txt_branch.Text)
cmd.Parameters.AddWithValue("@class", txt_class.Text)
Dim rowsInserted = cmd.ExecuteNonQuery()
if rowsInserted = 1 Then
MsgBox("Record inserted")
Else
MsgBox("Error inserting Record")
End If
当然,这会尝试在数据库中插入新记录。要更新现有记录,您需要UPDATE命令。或许最好在various SQL commands
进行快速审核