ここで何が問題なのですか?これは、Subsonic 2 CodingHorrorの例で見つけた方法であり、機能しません:(
new CodingHorror().Execute("SELECT * FROM product WHERE IdProduct = @IdProduct", 1);
表示されるエラーは、「<strong>パラメータ '@IdProduct' を定義する必要があります」です。
Subsonic 2.x と MySQL を使用しています。
ここで何が問題なのですか?これは、Subsonic 2 CodingHorrorの例で見つけた方法であり、機能しません:(
new CodingHorror().Execute("SELECT * FROM product WHERE IdProduct = @IdProduct", 1);
表示されるエラーは、「<strong>パラメータ '@IdProduct' を定義する必要があります」です。
Subsonic 2.x と MySQL を使用しています。
?
の代わりに使ってみてください@Product
。
new CodingHorror().Execute("SELECT * FROM product WHERE IdProduct = ?", 1);
MySQL は異なる (vs. SQL Server) 構文を使用してパラメーターを参照します。また、CodingHorror を使用しているため (つまり、SubSonic が介在せずに DB にパイプされた直接 SQL)、おそらくネイティブのパラメーター構文を使用する必要があります。 RDBMS、この場合は MySQL。
SQL Server と MySQL の間のパラメーター構文の違いの詳細な例については、このブログ投稿をご覧ください。
SubSonic は何も卑劣なことをしないと仮定していることに注意してください (たとえば、パラメータ名の SQL 文字列をスキャンし、DB 固有の規則に従ってそれらを置き換えます)。SubSonic は単純に SQL 文字列をそのまま渡すと仮定しています。 DBに。