gpt4 book ai didi

mysql - 使用参数更新 MySQL 记录不起作用

转载 作者:行者123 更新时间:2023-11-29 00:21:47 24 4
gpt4 key购买 nike

美好的一天,我在更新 MySQL 中的记录时遇到了问题。下面的代码是在 VB.Net 中。每当我执行代码时,我都不会出错,但信息不会保存在表中。请告诉我我做错了什么。

SQLstr = "UPDATE mainfinancials SET charge1=?charge1, charge2=?charge2, charge3=?charge3, charge4=?charge4, charge5=?charge5" _
& " WHERE acct='?acct';"
Pcomm.CommandText = SQLstr
If IsNumeric(txtCharge1.Text) Then Pcomm.Parameters.AddWithValue("?charge1", CDbl(txtCharge1.Text))
If IsNumeric(txtCharge2.Text) Then Pcomm.Parameters.AddWithValue("?charge2", CDbl(txtCharge2.Text))
If IsNumeric(txtCharge3.Text) Then Pcomm.Parameters.AddWithValue("?charge3", CDbl(txtCharge3.Text))
If IsNumeric(txtCharge4.Text) Then Pcomm.Parameters.AddWithValue("?charge4", CDbl(txtCharge4.Text))
If IsNumeric(txtCharge5.Text) Then Pcomm.Parameters.AddWithValue("?charge5", CDbl(txtCharge5.Text))
Pcomm.Parameters.AddWithValue("?acct", txtAcct.Text)
MsgBox(SQLstr)
Try
PConn.Open()
Pcomm.ExecuteNonQuery()
PConn.Close()
PConn.Dispose()
Catch ex As MySqlException
MsgBox(ex.Message.ToString())
PConn.Close()
End Try

我故意在代码中放置错误,它会返回一条错误消息。有人可以帮我弄这个吗。谢谢

最佳答案

不要用单引号将参数占位符括起来

" WHERE acct=?acct;"

用单引号将参数占位符括起来,将其名称转换为文字值。因此,您查询正在搜索 acct 列包含字面值 '?acct' 的记录。
当然它什么也找不到,也没有更新

顺便说一下,一旦查询字符串中出现参数占位符,您就应该为其提供一个参数。如果您忘记添加参数,则在执行命令时会发生错误,指出缺少预期参数。

您对 IsNumeric 进行测试,只有在测试成功时才添加参数。我认为你应该先测试这个错误情况,如果你的充电参数有什么不正确的地方就中止更新。

关于mysql - 使用参数更新 MySQL 记录不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20788673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com