C# MySQL 参数: ?或者 @

2023-12-25

我对 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();
    }
}

这些答案 https://stackoverflow.com/questions/652978/parameterized-query-for-mysql-with-c-sharp说两个@ or ?工作正常。 甚至cmd.Parameters.AddWithValue("@name", name);似乎有效(注意@在名字里)。

  1. 为什么它们都可以与 MySQL 配合良好?

  2. 他们之间有区别吗?

  3. 哪一种是使用 MySQL 的正确方法?

感谢我能得到的任何帮助。


来自文档 http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqlcommand.html:

提供程序的早期版本使用“@”符号来标记 SQL 中的参数。这与 MySQL 用户变量不兼容,因此提供程序现在使用“?”用于在 SQL 中定位参数的符号。要支持旧代码,您可以在连接字符串上设置“旧语法=yes”。如果您这样做,请注意,如果您未能定义要在 SQL 中使用的参数,则不会引发异常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# MySQL 参数: ?或者 @ 的相关文章

随机推荐

  • 如何确定 cv::Mat 是否为零矩阵?

    我有一个根据以下代码动态更改的矩阵 for It all frames begin It all frames end It ItTemp It subtract ItTemp Base NewData cout lt lt The siz
  • Android ArrayAdapter 和 JSONArray

    我是 Android 开发新手 考虑到 JSON Carrier 相对于 XML 的轻便性 我纯粹喜欢在我的简单应用程序中使用 JSON 对象和数组 我在使用 ArrayAdapter 填充 ListView 时遇到了挑战 这就是我克服的方
  • 对于 Scala 来说,类型擦除有什么优点吗?

    我听说过很多关于不同 JVM 语言的信息 这些语言仍处于蒸气软件模式 建议以某种方式实现具体化 我有一个半记得的 或者完全想象的 不知道是哪一个 的想法 我在某处读到 Scala 以某种方式利用 JVM 的类型擦除来完成具体化无法完成的事情
  • Android Wear 5.1 手腕手势 API?

    适用于可穿戴设备的 Android 5 1 1 引入了通过旋转 轻拂手腕来关闭通知的功能 这个API是否暴露给开发者使用 我无法找到任何相关信息 并且他们的可穿戴设备开发人员网站似乎没有更新 不 目前没有适用于 Wear 1 0 设备的手腕
  • 如何在Silverlight Image控件上显示TIFF(以Byte[]的形式)

    我创建了一个窗口服务 将所有 TIFF 文件放入数据库并将它们存储为Byte 现在我希望能够通过Silverlight Image控件来显示它们 所以我在绑定 XAML 期间使用转换器来转换Byte to Bitmap因为Image Sou
  • Delphi - 从类和接口继承(适配器模式)?

    我正在尝试执行 GoF 适配器模式 在 C 示例中 我遵循的 Adapter 类继承了原始类和一个适配接口 据我所知 在Delphi 2007 中 这是不可能的 或者是吗 因为如果一个类继承一个接口 它需要从 TInterfacedObje
  • Strawberry Perl v5.30.0 无法安装 Tcl (Windows 10)

    我从下载并安装了草莓 perl 5 30 0 1 64bit msi草莓perl com http strawberryperl com 在我的 Windows 10 上并尝试使用 cpan 安装 Tcl 模块 但由于缺少 tclsh 而失
  • 通过预定义的静态地址访问寄存器在 C++ 中是未定义的行为吗?

    我正在编译一个 C 程序以在独立环境中运行 并且我正在运行的 CPU 定义了一个可用的 32 位外设寄存器 编辑 内存映射 at PERIPH ADDRESS 正确对齐 并且不与任何其他 C 对象 堆栈等重叠 我编译以下代码PERIPH A
  • cmake、add_custom_command 以及来自不同目录的依赖项

    我有一个关于 CMake 的问题 这似乎是这里常见的问题 但没有一个答案似乎能解决我的问题 In the details子目录下有一个CMakeLists txt其中包含 add custom command OUTPUT part out
  • gforth 出错,libtool 编译失败

    我正在尝试跑步gforth与Rosetta 代码上的 Echo 服务器 https rosettacode org wiki Echo server 但是我得到以下信息 sh 1 libtool not found in file incl
  • 从 GridView 发起的 ContextMenu

    只是想知道是否有人可以帮助解决这个问题 我正在学习但无法弄清楚 如果我使用上下文菜单注册 GridView 对象 如下所示 registerForContextMenu gridview 如何确定菜单是从网格中的哪个视图对象 方块启动的 任
  • iOS:使用 iPad 键盘的 Enter 键进行操作

    我有两个文本字段 在第一个文本字段中我写 Hello 当我在 iPad 键盘中按 Enter 时 我希望在第二个文本字段中出现 World 如何使用 Enter 在我的应用程序中创建操作 您通常会将视图控制器指定为文本字段的委托 然后实现t
  • spring-boot 在单个 Web 应用程序路径上设置基本身份验证?

    我正在尝试在基于 spring boot spring MVC 的应用程序中设置单个路径 basic 以进行基本身份验证保护 我将使用我自己的自定义配置参数进行配置 因此用户名和密码只是 admin 和 admin 目前这适用于 basic
  • 如何微调Spring Cloud Feign客户端?

    春天的云doc http projects spring io spring cloud spring cloud html says 如果 Hystrix 在类路径上 默认情况下 Feign 将包装所有方法 带断路器 这很好 但是如何配置
  • 无法区分 Rspec 的“let”与“let!”

    我已阅读rspec 文档 https www relishapp com rspec rspec core docs helper methods let and let并搜索了许多其他地方 但我很难理解 Rspec 之间的区别let an
  • 设置 Matplotlib 颜色条大小以匹配图形

    I cannot get the colorbar on imshow graphs like this one to be the same height as the graph short of using Photoshop aft
  • 从 PCD 文件中解压点云的 RGB 值

    我保存了类型的点云PointCloud
  • laravel homestead降级到mysql 5.7

    我安装了 laravel homestead 最初安装了 mysql 5 7 我随后更新了我的 yaml 文件 包含以下内容并运行vagrant reload provision features mysql8 true 现在我想降级回 m
  • C# 中使用 ChromeDriver 获取网络信息

    我正在尝试从使用 C 中的 ChromeDriver 启动的 chrome 页面访问网络选项卡信息 我希望至少传输总数据和页面加载时间 我一直在搞乱设置不同的ChromeOptions and DesiredCapabilities 几乎没
  • C# MySQL 参数: ?或者 @

    我对 MySQL 参数有点困惑 我的代码的以下两个部分都工作正常 第一个使用参数 const string query UPDATE items SET name name price price WHERE id id try using