2010-06-01 181 views
0

我使用VB2005和SQL Server 2000日期時間問題2005

PVAR_SQL_STR = "INSERT INTO GLR_US_PERIOD (ORG5_CODE,PERIOD_YEAR,PERIOD_CODE," _ 
    "PERIOD_NO,FROM_DATE,TO_DATE,INSERT_USER,INSERT_DATE) VALUES " _ 
    & "('" & PVAR_COMPANY_CODE & "' ,'" & TextBox1.Text & "','" & Serial1.Text & _ 
    "'," & TextBox2.Text & ", '" + DateTimePicker1.Value.ToString("D") + "' ,'" + _ 
    DateTimePicker2.Value.ToString("D") + "','" & PVAR_USER_CODE & "','" + _ 
    Now.ToString("F") + "')" 

語法錯誤從字符串轉換因爲只有這部分的日期時間:

Now.ToString("F") 

爲什麼,我做不知道,但當我改變成

Now.ToString("D") 

它運作良好,但它節省僅限日期。我想插入日期時間。

回答

2

簡單的答案不是試圖將它全部構建到SQL語句中。改爲使用參數化查詢,並將參數值設置爲DateTime.Now(或DateTime.UtcNow)。

參數化查詢是有效防範SQL注入攻擊。將通用數據(尤其是用戶給出的數據)直接插入到SQL語句中是一種災難。

有關更多信息,請參閱docs for SqlCommand.Parameters - 或者查閱有關ADO.NET的任何體面教程或書籍。

+0

非常感謝你先生MR/JON 我試過了,它工作得很好 – haythamhamdy 2010-06-02 08:37:16