【发布时间】:2022-01-04 02:36:28
【问题描述】:
我正在学习 C#,作为 .Net 练习的一部分,我需要给用户一个带有 from 、 to 和 amount 字段的表单,以及当用户点击转移按钮时。应用程序应从 from account_id 中扣除金额并将钱添加到 To account_id
这是我的按钮功能代码
string mysql_conn_string = "server=localhost;user=root;database=vsp;port=3306;password=password";
MySqlConnection con = new MySqlConnection(mysql_conn_string);
con.Open();
string s1 = "update bank set amount = amount - " + textBox3.Text + "where account_id = " + textBox1.Text;
string s2 = "update bank set amount = amount + " + textBox3.Text + "where account_id = " + textBox2.Text;
MySqlTransaction tx = con.BeginTransaction();
MySqlCommand cmd = new MySqlCommand(s1, con, tx);
int a = cmd.ExecuteNonQuery();
MySqlCommand cmd2 = new MySqlCommand(s2, con, tx);
int b = cmd2.ExecuteNonQuery();
if (a == 0 || b == 0)
{
tx.Rollback();
MessageBox.Show("Rolling bacck");
}
else
{
tx.Commit();
MessageBox.Show("Transaction Succesful");
}
con.Close();
我收到以下错误: 您的 SQL 语法有错误;检查与您的 MySqlserver 版本相对应的手册,以在第 1 行的“account_id = 2”附近使用正确的语法
但是同样的 sql 语句在 mysql workbench 中运行正常,并且没有显示任何错误。
我的表有 account_id 和 amount 列。
两者都是INT
我尝试使用 Int32.Parse 将文本框类型更改为 INT 和 Int64.Parse
【问题讨论】:
-
在
s1和s2创建后检查它们的值。这就是为什么你永远不应该连接值和字符串来创建 SQL 的 许多 原因之一。使用 DBParameters 总是 -
谢谢你的问题是where语句之前没有空格。而且我还没有达到 C# 中的 DBParameters 阶段,但我将来肯定会使用它们,谢谢你的帮助