【发布时间】:2012-01-04 23:35:26
【问题描述】:
我有一个带有名为 ageTextBox 的文本框的 C# 表单应用程序;
按下按钮后,应用程序应该更新我的 MySQL 数据库中的一个或多个值,但它没有。
代码如下:
private void button2_Click(object sender, EventArgs e)
{
// this works perfectly if I put an actual number instead of @ag
string sql = "update persons set age = 30 where age = @ag";
OdbcCommand cmd = new OdbcCommand(sql, conn);
cmd.Parameters.Add("@ag", OdbcType.Int);
cmd.Parameters["@ag"].Value = ageTextBox.Text;
int aff = cmd.ExecuteNonQuery();
if (aff == 0)
MessageBox.Show("No rows afected");
else
MessageBox.Show("Everything went as planned");
}
}
它总是显示“没有行受到影响”! (除非我输入的不是数字,否则会抛出异常)
有人知道怎么回事吗?
【问题讨论】:
-
尝试在值行上使用
Convert.ToInt(ageTextBox.Text)。 MySQL 可能会窒息,因为您传递的是字符串而不是 int。 -
@MichaelTodd 将其添加为答案;看起来很有说服力
-
@MichaelTodd 我已经尝试过 int.parse 和 Convert.ToInt... 仍然无法正常工作... 无论如何感谢您的建议。
-
我记得之前的一个场景,在与数字列进行比较时提供字符串 arg 实际上会执行字符串比较(即 MySQL 会将列转换为字符串值)。
-
忽略返回的行数,MySQL 中的行是否真的发生了变化?
标签: c# mysql sql parameters