2010-06-01 138 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