none
OleDbException未處理 日期語法問題 RRS feed

  • 問題

  • 請教各位前輩:

    在程式中透過CommandText來更新資料庫中的項目,

    但執行後出現"OleDbException未處理"的狀況,

    並顯示日期語法錯誤,

    下面是我的程式碼,

    當搜尋條件只有TagID時是可以執行的,

    所以reader.GetString(0)是沒有問題的,

    而reader.GetDateTime(1)從資料庫中所讀到的內容為 2015/1/23 下午 04:25:11,

    在Access資料庫中我的欄位資料類型為"日期/時間"且沒有套用任何格式或遮罩,

    cmd1.CommandText = "Update 進度 Set 訂單編號='" + TextBox2.Text + "'Where TagID='" + reader.GetString(0) + "'And 開始時間=#" + reader.GetDateTime(1) +"#";

    cmd1.ExecuteNonQuery();

    請問我該如何解決呢?

    謝謝大家 :)

    2015年1月27日 上午 08:18

解答

  • 1. SQL Injection

    2. 把日期改成 yyyy/MM/dd HH:mm:ss 格式。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2015年1月27日 上午 09:24
    版主

所有回覆

  • SQL Injection

    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    2015年1月27日 上午 08:20
  • 1. SQL Injection

    2. 把日期改成 yyyy/MM/dd HH:mm:ss 格式。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2015年1月27日 上午 09:24
    版主
  • (1) 先強調, 使用串字串的方式傳遞 SQL 查詢的參數是一個不好的習慣, 也就是前面兩位回應的會產生 SQL Injection 的問題. 關於此節, 請參考 設定參數和參數資料型別

    (2) 我猜想你的問題在於, 你的 SQL Statement 整個都連在一起了, 比方 + TextBox2.Text + "'Where TagID='"  在 ' 和 Where 中間根本沒有空格, 仔細看你的字串, 有一堆這種問題. 所以你應該先看看 cmd1.CommandText 實際的內容是甚麼, 是否如我所講根本連在一起


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2015年1月27日 下午 09:33
    版主
  • 謝謝各位前輩的指導,

    我的問題已解決,

    我也會注意SQL Injection 的問題,

    謝謝大家 :)

    2015年1月28日 上午 06:46