2012-03-26 48 views
1
比較

時,當我在VB中的文本框中輸入訪問數據庫和日期比較日期我的SQL語句返回空日期。在我看來,這兩個日期是不同的格式,所以從select語句返回null,但我怎麼去做這件事。請幫助。我的選擇如下:如何從Access數據庫日期texbox在VB

("SELECT farmer_num as [FARMER'S NUMBER], " & _ 
             "farmer_name as [FARMER'S NAME], farmer_village  as [VILLAGE], farmer_phone as [PHONE NUMBER], reg_date as [REGISTRATION DATE], " & _ 
             "farmer_centre as [CENTRE] FROM farmer where reg_date =" & TextBox.Text.ToString, cnn)` 

回答

2

第一點,你不應該在受信任的用戶輸入到你的SQL中爭分奪秒。它使您的代碼非常容易受到SQL Injection的攻擊,這是易受攻擊且易受攻擊的漏洞。

您應該使用parameterized queries代替。

這本身就可以解決您的問題,如果你是幸運的。如果您使用參數化查詢,那麼數據類型轉換幾乎「神奇地」發生。你不需要擔心它。

下面是專門與Access數據庫和.NET處理沿着幫你的文章的鏈接:http://www.mikesdotnetting.com/Article/26/Parameter-Queries-in-ASP.NET-with-MS-Access好給

+0

非常感謝你。我剛剛閱讀鏈接,並添加了###,現在一切正常。 – ken 2012-03-26 18:17:37

0

regdate的類型是日期。

而且地方你必須在你的代碼的某個地方約會在文本框中顯示的日期,然後使用一個參數化查詢,日期,不是它的格式化字符串版本作爲參數值。

除了@ David提到的SQl注入問題,請記住'8/6/2012'是一個字符串而不是日期。

+0

謝謝。我使用參數化查詢和工作人員非常棒 – ken 2012-03-26 18:18:50

0

使用這樣的..

("SELECT farmer_num as [FARMER'S NUMBER], " & _ "farmer_name as [FARMER'S NAME], farmer_village as [VILLAGE], farmer_phone as [PHONE NUMBER], reg_date as [REGISTRATION DATE], " & _ "farmer_centre as [CENTRE] FROM farmer where convert(datetime, '" & TextBox.Text.ToString &"', 101)"; 

您可能需要更改第二個參數轉換功能可按如果不是MM/DD/YYYY不同的文本框格式。

字符串連接不使用參數化的SQL妥善解決。嘗試使用SqlCommand和SqlParameter。

+0

我剛剛在'TextBox.Text.ToString'周圍添加了'##',它正在工作。讓我試試你的想法吧。感謝您的答覆 – ken 2012-03-26 18:21:22

相關問題