2014-02-17 122 views
1

在我的程序中,我將日期從DateTimePicker保存到全局變量中,其中 My.Settings.date = dtpDate_do.Value.Date。我使用這個日期來比較我的數據庫中的日期,但我總是得到語法錯誤,無論我在改變什麼。 這是我的查詢:在我的數據庫
在sql查詢中使用日期的語法錯誤

cmd.CommandText = "SELECT ID, order_date FROM orders WHERE order_date = " & My.Settings.date & " ORDER BY ID DESC" 


日期都存儲在歐盟格式點 - 17.2.2014。任何人都可以提供一些幫助。

+0

發佈您的語法錯誤。 – NaaN

+0

語法錯誤可能是因爲日期周圍沒有引號。 –

+0

你在My.Settings.date中獲得了什麼?如在調試時運行時的實際值? – Rohan

回答

1

永遠不要創建查詢這樣的。始終沒有任何異常使用參數。這樣可以避免SQL注入攻擊,並確保正確的參數格式。

對不起,我不知道VB.NET,但它應該是與此類似:

cmd.CommandText = "SELECT ID, order_date FROM orders WHERE order_date = @Date ORDER BY ID DESC" 
cmd.Parameters.AddWithValue("@Date", My.Settings.data) 

說明:創建使用@ParamName爲您的參數的佔位符查詢。然後用你的參數替換值。確保應用具體的類型值(即不是對象)或/並提供數據類型。

+0

Ty alzaimar。你的方法按計劃進行。但是現在我在程序啓動時遇到了另一個錯誤。已經與其基礎RCW分離的_COM對象不能被使用_。你有什麼想法爲什麼發生這種情況? – Dave

+0

我試過用局部變量,但仍然有這個錯誤。也許是代碼在某處引起的。不知道。 – Dave

+0

選中此:http://stackoverflow.com/questions/2260990/com-object-that-has-been-separated-from-its-underlying-rcw-cannot-be-used – alzaimar

0

嘗試在這樣的查詢中使用參數:

cmd.CommandText = "SELECT ID, order_date FROM orders WHERE order_date = @date ORDER BY ID DESC"; 
cmd.Parameters.Add(new SqlParameter("@date", dateTimePicker.Value.Date));