如何通过带参数的DbCommand将System.Datetime对象插入SqlServer

时间:2012-03-24 15:43:31

标签: c# sql-server-2008

我试着这几个小时。

            Database db = DBUtil.GetInstance().GetDataBase();
            DbCommand cmd = db.GetSqlStringCommand(@"INSERT INTO [XXX] (
            ...
                                                                  ,[FirstDate]
            ...
            ) VALUES ('@FirstDate',...");

            db.AddInParameter(cmd, "@FirstDate", DbType.Date, DateTime.Now );

但我总是在下面得到这个例外信息。

  

{System.Data.SqlClient.SqlException(0x80131904):转换失败   从字符串转换日期和/或时间时。

我该怎么做转换?或者拿起另一个DbType? DbType.DateTime2?

2 个答案:

答案 0 :(得分:2)

您不需要在Insert Statement中为参数添加引号。 (值( '@ FirstDate'))

    Database db = DBUtil.GetInstance().GetDataBase();
    DbCommand cmd = db.GetSqlStringCommand(@"INSERT INTO [XXX] (
    ...
                                                          ,[FirstDate]
    ...
    ) VALUES (@FirstDate,...");

   db.AddInParameter(cmd, "@FirstDate", DbType.DateTime, DateTime.Now );

答案 1 :(得分:1)

取决于数据库中的类型,如果它是Date或DateTime。

// full date and time
db.AddInParameter(cmd, "@FirstDate", DbType.DateTime, DateTime.Now );

// just the date portion
db.AddInParameter(cmd, "@FirstDate", DbType.Date, DateTime.Now.Date );