请帮助我使用 oledb 连接更新 Vb.net "Data.accdb"的访问文件名记录



更新记录出错

首先,我从Datagrid中选择一行,然后选择行值显示到文本框,然后我单击更新按钮更新记录。输入新用户名和密码后,点击保存按钮,然后出现如下错误:

误差


system.data.oledb.oledbException(0x80040e14): UPDATE语句语法错误。

system.data.oledb.oledbCommand。executeCommandTextErrorHandling(Oledb Hresult hr)

System.data.Oledb.OledbCommand。ExecutecommandTextforSingleResult(tagDBPARAMS dbParams,
Object&executeResult)

System.data.Oledb.OledbCommand。执行命令(CommandBehavior行为,字符串方法)
at System.data.Oledb.OledbCommand.ExecuteNonQuery()
在Nakul.frmusers.cmdsave_click(对象发送者,EventArgs e)在
E: 库… frmusers.vb: 152行




数据。accdb//访问文件名
表名:users
设计视图:用户id   编号  // 主键
,,,,,,,,,,,,,,,,,,,,, username ,,文本
,,,,,,,,,,,,,,,,,,,,, password ,,文本

Imports System.Data
Imports System.Data.OleDb
public class users
Dim str As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:kulData.accdb;Persist Security Info=False;"
Private Sub cmdSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSave.Click
    Dim conn As New OleDbConnection(str)
    Dim qry As New OleDbCommand("update users set username='" & txtusername.Text & "', password='" & txtpassword.Text & "' where userid=" & txtuserid.Text, conn)
            Try
                conn.Open()
                qry.ExecuteNonQuery()       // Error Line No 152 in Coading
                conn.Close()
                MsgBox("Record Updated")
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
 End Sub
End class

语法错误的主要原因是PASSWORD这个词。它是Access中的保留关键字,因此您需要用方括号

封装它。

说,你需要改变你的查询和使用参数化的方法,而不是字符串连接。构建查询连接字符串可能是语法错误的另一个来源(用户名中包含单个引号?),并为sql注入攻击打开大门

Private Sub cmdSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSave.Click
    dim query = "update users set username=?, [password]=? where userid=?"
    Using conn = new OleDbConnection(str)
    Using qry = New OleDbCommand(query, conn)
        qry.Parameters.AddWithValue("@p1",txtusername.Text )
        qry.Parameters.AddWithValue("@p2",txtpassword.Text )
        qry.Parameters.AddWithValue("@p3",Convert.ToInt32(txtuserid.Text))
        conn.Open()
        qry.ExecuteNonQuery()       
        conn.Close()
        MsgBox("Record Updated")
    End Using
    End Using
 End Sub

还要注意using语句,它确保正确关闭和处置连接和命令。

相关内容

  • 没有找到相关文章

最新更新