【问题标题】:Insert data into .accdb (ms access) failed将数据插入 .accdb(毫秒访问)失败
【发布时间】:2023-04-10 20:59:01
【问题描述】:

我正在将用户名和密码插入 vb.net 中的数据库,但它给出了这个错误:

the error image

有人可以看看是什么原因造成的吗?

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    pro = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Amin\source\repos\Nando's\Nando's\user.accdb"

    connstring = pro
    myconnection.ConnectionString = connstring
    myconnection.Open()
    command = "insert into user ([USERNAME],[PASSWORD]) values ('" & USERNAMETextBox.Text & "','" & PASSWORDTextBox.Text & "')"
    Dim cmd As OleDbCommand = New OleDbCommand(command, myconnection)
    cmd.ExecuteNonQuery()
    cmd.Dispose()
    myconnection.Close()

    MsgBox("Record added", MsgBoxStyle.Information)

结束子

【问题讨论】:

  • PASSWORDTextBOX.Text 中输入:a'); DROP TABLE user;--(真的不要)使用参数,Using 语句以确保确实发生了处置,最后永远不会像那样存储密码。
  • 嗯,看到错误信息就很清楚了,insert语句有问题。使用参数而不是字符串连接,你会发现做得好会让你的问题消失
  • 在遵循 Codexer 的建议之前,请备份您的数据库
  • cmd.Parameters.Add(New OleDbParameter("USERNAME", CType(USERNAMETextBox.Text, String))) 参数也给出相同的错误@Hursey
  • 不使用参数会打开闸门,你不希望这样。我的观点是有人可以在可以执行的输入中制作一个方便的查询,并且通过使用参数有助于防止这种情况发生。

标签: asp.net vb.net


【解决方案1】:

我从这里改变:

command = "insert into user ([USERNAME],[PASSWORD]) values ('" & USERNAMETextBox.Text & "','" & PASSWORDTextBox.Text & "')"

到这里:

command = "insert into [user] ([USERNAME],[PASSWORD]) values ('" & USERNAMETextBox.Text & "','" & PASSWORDTextBox.Text & "')"

我只是在user 处放了一个括号,它就解决了。 坏事是我在教程之间来回走动了好几天,但他们都没有解决它,因为错误出现在表名上,但最终解决了。感谢 Hursey 提及保留字。

【讨论】:

  • 您可能已经解决了眼前的问题,但请学会使用参数以避免sql注入等问题。另外,不要将密码存储为纯文本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多