C#MySQL参数:?或@
我对MySQL参数有点困惑 我的代码的以下两部分都可以正常工作。第一个使用带有C#MySQL参数:?或@,c#,mysql,C#,Mysql,我对MySQL参数有点困惑 我的代码的以下两部分都可以正常工作。第一个使用带有@的参数: const string query = "UPDATE `items` SET `name` = @name, `price` = @price WHERE `id` = @id"; try { using (MySqlCommand cmd = new MySqlCommand(query, Database.MyConnection)) { cmd.Parameters
@
的参数:
const string query = "UPDATE `items` SET `name` = @name, `price` = @price WHERE `id` = @id";
try
{
using (MySqlCommand cmd = new MySqlCommand(query, Database.MyConnection))
{
cmd.Parameters.AddWithValue("name", name);
cmd.Parameters.AddWithValue("price", price);
cmd.Parameters.AddWithValue("id", id);
cmd.ExecuteNonQuery();
}
}
第二个参数使用?
:
const string query = "UPDATE `items` SET `name` = ?name, `price` = ?price WHERE `id` = ?id";
try
{
using (MySqlCommand cmd = new MySqlCommand(query, Database.MyConnection))
{
cmd.Parameters.AddWithValue("name", name);
cmd.Parameters.AddWithValue("price", price);
cmd.Parameters.AddWithValue("id", id);
cmd.ExecuteNonQuery();
}
}
说@
或?
都可以。
偶数cmd.Parameters.AddWithValue(“@name”,name)
似乎有效(注意名称中的@
)
看来情况又变了 从更新的文档中 旧语法,旧语法,使用旧语法,使用旧语法-此选项在Connector/Net 5.2.2中被弃用。现在应该使用“@”符号作为参数标记来编写所有代码 也来自 虽然仍然支持使用“?”的旧模式,但现在首选使用“@”符号作为参数。为避免将“@”符号与用户变量组合使用时发生冲突,请参阅第7章“连接器/网络连接字符串选项参考”中的“允许用户变量连接字符串”选项。旧的语法连接字符串选项现在已被弃用
@然后呢?都是MySQL中标记参数的符号,您甚至可以像
command.CommandText = @"UPDATE sellinginventorytable SET cqty=cqty+@aqty,`date`=CURRENT_TIMESTAMP(),`user`=@user WHERE cid=?cid;
INSERT INTO internaltranstable SET `type`='INV.ADJ.', `cid`=?cid, `cqty`=@aqty, `date`=CURRENT_TIMESTAMP(), `notes`='STORE INVENTORY ADJUSTMENT', `area`='COUNTER', `sender`=@user, `receiver`=@user;";
command.Parameters.AddWithValue("?cid", row.Cells["barcode"].Value);
command.Parameters.AddWithValue("@aqty", row.Cells["aqty"].Value);
command.Parameters.AddWithValue("@user", Properties.Settings.Default.user.ToUpper());
command.ExecuteNonQuery();
command.Parameters.Clear();
我想这回答了OP.
+1
中的所有问题,当然找到了。谢谢!这肯定回答了我的问题+接得好。