将日期字符串保存到asp.net(vb.net)中的SQL Server日期类型列

时间:2014-06-13 07:10:26

标签: asp.net vb.net

我是vb.net和asp.net的初学者。我在保存日期时遇到问题,日期是来自DevExpress datepicker控件的字符串值。

列名为expiryDate,其类型为date

这是我的ASPX标记:

<tr>
    <td nowrap="nowrap" class="label" align="right" valign="top" style="width: 10%">
        Expiry Date
    </td>
    <td style="width: 40%" valign="top">
        <dxe:ASPxDateEdit ID="expiryDate" 
                          runat="server" 
                          EditFormat="Date" 
                          Date="13/06/2014" 
                          Width="200">
        </dxe:ASPxDateEdit>
    </td>
</tr>

在C#代码背后:

sqlSave = "INSERT INTO [Product] (Title, expiryDate) VALUES ("
          sqlSave += " '" & txtProductName.Text.Trim().Replace("'", "''") & "', "
          sqlSave += ""   & expiryDate.Text & " )"

我使用expiryDate.Text保存在数据库中,但保存的日期是:1900-01-01,有时我收到消息Operand type clash: int is incompatible with date

我不知道如何解决这个问题,请帮忙吗?

2 个答案:

答案 0 :(得分:3)

试试这个,

sqlSave = "INSERT INTO [Product] (Title, expiryDate) VALUES ("
                sqlSave += " '" & txtProductName.Text.Trim().Replace("'", "''") & "', "
                sqlSave += "'" & Convert.ToDateTime(expiryDate.Text).ToString("yyyy-MM-dd") & "' )"

但是,我建议你使用参数化查询而不是简单的连接字符串。

cmd.CommandText = "INSERT INTO [Product] (Title, expiryDate) VALUES (@Title,@expiryDate)";

cmd.Parameters.Add("@Title", SqlDbType.VarChar).Value = txtProductName.Text.Trim().Replace("'", "''");
cmd.Parameters.Add("@expiryDate", SqlDbType.DateTime).Value = Convert.ToDateTime(expiryDate.Text);

答案 1 :(得分:0)

替换

" & expiryDate.Text & "

'" & expiryDate.Text & "'