這裏有什麼問題?這是我在亞音速2 CodingHorror的例子是如何發現並沒有工作:(Subsonic 2.x MySQL CodingHorror
new CodingHorror().Execute("SELECT * FROM product WHERE IdProduct = @IdProduct", 1);
我得到的錯誤是「參數‘@IdProduct’必須定義」
我中號採用亞音速2.x和MySQL的!
這裏有什麼問題?這是我在亞音速2 CodingHorror的例子是如何發現並沒有工作:(Subsonic 2.x MySQL CodingHorror
new CodingHorror().Execute("SELECT * FROM product WHERE IdProduct = @IdProduct", 1);
我得到的錯誤是「參數‘@IdProduct’必須定義」
我中號採用亞音速2.x和MySQL的!
使用?
代替@Product
嘗試。
new CodingHorror().Execute("SELECT * FROM product WHERE IdProduct = ?", 1);
MySQL使用不同的(vs. SQL Server)語法來引用參數,並且由於您使用的是CodingHorror(也稱爲直接SQL,而不通過SubSonic進入數據庫),您可能需要使用RDBMS的本地參數語法,在本例中爲MySQL。
查看this blog post,獲取SQL Server和MySQL之間差異參數語法的更全面的示例。請注意,我假設SubSonic不會做任何狡猾的事情(例如,掃描參數名稱的SQL字符串並根據數據庫特定的規則替換它們) - 我假設SubSonic只是傳遞SQL字符串直到數據庫。
嗨, 非常感謝您的幫助! 這是一個很好的選擇,但不幸的是,它不是解決方案,因爲Subsonic潛行SQL字符串和MySQL參數語法Subsonic不識別任何參數。 SubSonic.SqlQueryException:參數數量與輸入的值不匹配 - 這可能是我們解析器的錯;請檢查列表以確保計數加起來,如果存在,請在列表中的參數周圍添加一些間距。 – 2009-12-12 22:26:16
嗯。解析器是否足夠聰明以知道「 - @foo」是一個評論?如果不是的話,這將是一個愚弄解析器的簡單方法。 – 2009-12-13 18:14:14
嗯, - 使用MySQL運行測試,看看會發生什麼... – 2009-12-12 19:10:04