Subsonic 2.x MySQL 编码恐怖
这是怎么回事?这就是我在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试使用
?
而不是@Product
。MySQL 使用不同的(相对于 SQL Server)语法来引用参数,并且由于您使用的是 CodingHorror(也称为直接 SQL 管道传输到数据库,而没有 SubSonic 介入),您可能需要使用RDBMS,在本例中为 MySQL。
请查看这篇博文,了解参数语法差异的更全面示例SQL Server 和 MySQL 之间。
请注意,我假设 SubSonic 不会做任何偷偷摸摸的事情(例如,扫描 SQL 字符串中的参数名称并根据特定于数据库的规则替换它们)——我假设 SubSonic 只是按原样传递 SQL 字符串到数据库。
Try using
?
instead of@Product
.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.