Subsonic 2.x MySQL 编码恐怖

发布于 2024-08-15 04:55:10 字数 276 浏览 12 评论 0原文

这是怎么回事?这就是我在 Subsonic 2 CodingHorror 示例中发现的方法,但不起作用:(

new CodingHorror().Execute("SELECT * FROM product WHERE IdProduct = @IdProduct", 1);

我得到的错误是“必须定义参数'@IdProduct'

我是使用 Subsonic 2.x 和 MySQL!

What’s wrong here? This is how I found on examples of Subsonic 2 CodingHorror and doesn't works :(

new CodingHorror().Execute("SELECT * FROM product WHERE IdProduct = @IdProduct", 1);

The error I get is “Parameter '@IdProduct' must be defined

I’m using Subsonic 2.x and MySQL!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

安稳善良 2024-08-22 04:55:10

尝试使用 ? 而不是 @Product

new CodingHorror().Execute("SELECT * FROM product WHERE IdProduct = ?", 1);

MySQL 使用不同的(相对于 SQL Server)语法来引用参数,并且由于您使用的是 CodingHorror(也称为直接 SQL 管道传输到数据库,而没有 SubSonic 介入),您可能需要使用RDBMS,在本例中为 MySQL。

请查看这篇博文,了解参数语法差异的更全面示例SQL Server 和 MySQL 之间。

请注意,我假设 SubSonic 不会做任何偷偷摸摸的事情(例如,扫描 SQL 字符串中的参数名称并根据特定于数据库的规则替换它们)——我假设 SubSonic 只是按原样传递 SQL 字符串到数据库。

Try using ? instead of @Product.

new CodingHorror().Execute("SELECT * FROM product WHERE IdProduct = ?", 1);

MySQL uses a different (vs. SQL Server) syntax to refer to parameters, and since you're using a CodingHorror (aka direct SQL piped to the DB without SubSonic getting in between) you will probably need to use the native parameter syntax of the RDBMS, in this case MySQL.

Take a look at this blog post for a more thorough example of the diffs in parameter syntax between SQL Server and MySQL.

Note that I'm assuming that SubSonic doesn't do anything sneaky (e.g. scan the SQL strings for parameter names and replace them according to DB-specific rules)-- I'm assuming that SubSonic simply passes the SQL string as-is over to the DB.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文