none
DataCommand的SQL語法 RRS feed

  • 一般討論

  • 大家好
    我目前用C#寫一個連MySQL的程式
    希望資料表修改後使用Update函式做更新
    但是OdbcDataAdapter的Command要自已下
    我試做了刪除,SQL語法如下:"DELETE FROM `advertisement`"
    更新之後是整個資科都刪除了
    好吧,我知道我好傻好天真
    我以為它會自己判斷那一個資料被刪除~"~
    於是我用CommandBuilder
    以DeleteCommand為例
    DELETE FROM advertisement WHERE (((? = 1 AND index IS NULL) OR (index = ?)) AND (start = ?) AND (end = ?))
    這是個合法的SQL語法,但是因為Apache的MySQL要用`把欄位名稱包起來
    像這樣DELETE FROM advertisement WHERE `index` = 2
    所以用CommandBuilder的Command會出現錯誤
    於是我就自己用OdbcCommand給一樣的SQL語法,但是還是會錯
    用錯誤嘗試法的結果,我猜測是OdbcCommand給 ? 的關係
    只接給參數就會過
    有人知道這樣的狀況,SQL語法該怎麼下嗎?

    2011年3月28日 上午 10:14

所有回覆

  • SQL 語法直接下。

    DELETE

    FROM advertisement

    WHERE index=2

    你是要問參數式的 SQL 語法吧?

    用 OdbcCommandBuilder 是不能指定 Delete / Insert / Update 的,他會依據 SELECT 自動產生,你要不要重新看一下線上手冊 CommandBuilder 的用法範例?


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年3月28日 下午 02:58
  • 看來目前最大的問題是appserv
    我直接進資料庫修改後,會Show出SQL語法
    像是這樣子

    SELECT *
    FROM `advertisement`  
    LIMIT 0 , 30
    最大的關鍵點就是" ` "
    這個符號干擾了我用程式連資料庫的SQL語法
    所以用CommandBuilder的Command都會出現SQL語法不合法
    不知道有沒有人遇到跟我一樣的狀況?
    2011年3月28日 下午 03:27
  • 請問您是要做參數查詢嗎? 如果是的話可以參考:Add parameterized queries in MySql (OleDb)
    2011年3月30日 上午 02:22
  • 自問自答

    Appserv的MySQL語法要用「`」將欄位名稱夾起來
    用CommandBuilder的QuotePrefix與QuoteSuffix的屬性設為"`"即可

    目前Insert可以正常運行,Delete與Update的並行違規還在解

    資料庫不熟的辛酸。


    2011年3月30日 上午 04:27