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.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);
似乎工作(请注意名称中的@
)。
-
为什么所有这些都可以正常使用MySQL?
-
它们之间有区别吗?
-
哪一个是与MySQL一起使用的正确方法?
感谢您提供的任何帮助。
从文档 :
提供程序的早期版本使用“@”符号标记SQL中的参数。 这与MySQL用户变量不兼容,因此提供程序现在使用’?’ 用于在SQL中定位参数的符号。 要支持旧代码,可以在连接字符串上设置“old syntax = yes”。 如果您这样做,请注意,如果您未能定义要在SQL中使用的参数,则不会抛出exception。
看来这又改变了
从更新的文档连接器选项
旧语法,OldSyntax,使用旧语法,UseOldSyntax – Connector / Net 5.2.2中不推荐使用此选项。 现在应该使用’@’符号作为参数标记来编写所有代码。
也来自Creating a Connector .Net
使用参数的’@’符号现在是首选方法,尽管使用’?’的旧模式 仍然受支持。 要在将“@”符号与用户变量结合使用时避免冲突,请参阅第7章“连接器/网络连接字符串选项参考”中的“允许用户变量连接字符串”选项。 现在已弃用旧语法连接字符串选项。
@和? 都是在MySQL中标记参数的符号,你甚至可以像…一样使用它
上述就是C#学习教程:C#MySQL参数:? 要么 @分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
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();
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/991913.html