我对MySQL参数感到困惑.我的代码的以下两部分都可以正常工作.第一个使用@的参数:const string query = UPDATE `items` SET `name` = @name, `price` = @price WHERE `id` = @id;try{using (MySqlCommand cmd =...
我对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();
}
}
These answers说@或者?工作得很好.
甚至cmd.Parameters.AddWithValue(“@ name”,name);似乎工作(请注意名称中的@).
>为什么所有这些都适用于MySQL?
>他们之间有区别吗?
>哪一种是与MySQL一起使用的正确方法?
感谢您的帮助.
解决方法:
从documentation:
Prior versions of the provider used the ‘@’ symbol to mark parameters in SQL. This is incompatible with MySQL user variables, so the provider now uses the ‘?’ symbol to locate parameters in SQL. To support older code, you can set ‘old syntax=yes’ on your connection string. If you do this, please be aware that an exception will not be throw if you fail to define a parameter that you intended to use in your SQL.
本文标题为:C#MySQL参数:?要么 @
基础教程推荐
- C# 使用Proxy代理请求资源的方法步骤 2023-01-17
- C#使用FileStream复制一个任意文件 2023-01-22
- Unity之跑马灯抽奖效果单抽与连抽(附demo) 2023-04-15
- 详解C#泛型的类型参数约束 2023-03-09
- 基于JWT.NET的使用(详解) 2022-11-28
- C#实现聊天窗体以及抖动 2023-04-22
- C#自定义WPF中Slider的Autotooltip模板 2023-06-15
- C#删除Excel中的图片实例代码 2023-01-27
- C#设计模式之建造者模式生成器模式示例详解 2023-06-28
- 大家应该掌握的多线程编程 2022-12-02