0

我的程序中有 2 个更新 SQL,一个用于学生表,一个用于用户表。我的学生表的 SQL 工作正常,并将新数据保存到数据库中,但将我的数据输入用户表的 SQL 却没有。当我运行程序时它没有给我任何错误,但是当我结束程序并检查我的数据库时,什么都没有改变。

Dim UpdateComm As New OleDb.OleDbCommand
Dim dbAdap As New OleDb.OleDbDataAdapter

ConnectToDB()

Dim sqlUpdateUser As String = "UPDATE usersTable SET usersTable.[Password] = " & _
  Chr(39) & txtNewPass.Text & Chr(39) & _
  ", usersTable.Username = " & Chr(39) & Username & Chr(39) & _
  " WHERE (((userTable.UserID) = " & Chr(39) & CurrentUID & Chr(39) & "));"

UpdateComm = New OleDb.OleDbCommand(sqlUpdateUser, dbConn)
UpdateComm.Parameters.AddWithValue("@p1", txtNewPass.Text)
UpdateComm.Parameters.AddWithValue("@p2", Username)
UpdateComm.ExecuteNonQuery()

谢谢。

4

2 回答 2

0

尝试这个

Dim connection As New SqlConnection(connectionInfo)
Dim sqlUpdateUser As String = "UPDATE usersTable SET [Password] = @pwd, Username=        @userName WHERE UserID = @currentUID;"
Dim UpdateComm  As SqlCommand(sqlUpdateUser , connection)

 With UpdateComm .Parameters
   .AddWithValue("@pwd", txtNewPass.Text)
   .AddWithValue("@userName", Username)
   .AddWithValue("@currentUID", CurrentUID)
   .ExecuteNonQuery()
 End With
于 2013-02-10T18:32:08.630 回答
0

如评论中所述,您应该参数化您的 SQL 命令以避免 SQL 注入攻击。它们通常还消除了由不正确的字符串连接引起的错误。您的代码应如下所示:

Dim UpdateComm As New OleDb.OleDbCommand
Dim dbAdap As New OleDb.OleDbDataAdapter

ConnectToDB()

Dim sqlUpdateUser As String = "UPDATE usersTable SET [Password] = @pwd, Username = @userName WHERE UserID = @currentUID;"

UpdateComm = New OleDb.OleDbCommand(sqlUpdateUser, dbConn)
UpdateComm.CommandType = CommandType.Text;
UpdateComm.Parameters.AddWithValue("@pwd", txtNewPass.Text)
UpdateComm.Parameters.AddWithValue("@userName", Username)
UpdateComm.Parameters.AddWithValue("@currentUID", CurrentUID)
UpdateComm.ExecuteNonQuery()

您似乎没有将第三个添加CurrentUID到您的命令参数中。我还删除了您应用于列名的别名 - 它们不是必需的,因为您只处理 1 个表。

于 2013-02-10T18:24:50.837 回答