VB 2005中的日期时间问题

时间:2010-06-01 09:41:51

标签: x12

我正在使用VB2005和SQL SERVER 2000。

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") + "')"

语法错误从字符串转换datetime,因为仅此部分:

Now.ToString("F")

为什么,我不知道,但是当我换成

Now.ToString("D")

效果很好,但只保存日期。我想插入日期时间。

1 个答案:

答案 0 :(得分:2)

简单的答案是不要试图将它全部构建到SQL语句中。请改用参数化查询,并将参数值设置为DateTime.Now(或DateTime.UtcNow)。

参数化查询有效防范SQL注入攻击。将一般数据(特别是用户提供的数据)直接插入到SQL语句中是一种灾难。

有关详细信息,请参阅docs for SqlCommand.Parameters - 或参考任何体面的教程或ADO.NET上的书籍。