-2

使用我正在使用的 C# 在 DB (SQL server 2005) 中存储日期时出错,

DateTime mydate = DateTime.Now;

insert into mytablename (appdate) values('"+mydate.ToShortDateString()+"');

bt 当我运行查询时它显示错误

也试过,

mydate.ToShortDateString().ToString("dd-MMM-yyyy HH:mm:ss")在 C# 中,仅在编辑器中仍显示错误。

如何使用 C# 查询在 SQL Server 2005 中存储“日期”

4

2 回答 2

3

您的查询尝试在 DateTime 字段中插入一个字符串。当然它不起作用。
插入的正确方法是通过这样的参数化查询

string insertSQL = "insert into mytablename (appdate) values(@dt)";
SqlCommand cmd = new SqlCommand(insertSQL, con);
cmd.Parameters.AddWithValue("@dt", mydate);
cmd.ExecuteNonQuery();

这里我假设连接已经初始化并打开

于 2013-05-10T09:47:16.267 回答
3

使用参数化 SQL,并将值设置为参数:

string sql = "insert into tablename (appdate) values (@appdate)";
using (var connection = new SqlConnection(...))
{
    connection.Open();
    using (var command = new SqlCommand(sql, connection))
    {
        command.Parameters.Add("@appdate", SqlDbType.DateTime).Value
            = DateTime.Now;
        int rowsInserted = command.ExecuteNonQuery();
        // TODO: Validation of result (you'd expect it to be 1)
    }
}

当您有数据要包含在对数据库的请求中时,您应该始终使用参数化 SQL。这避免了SQL 注入攻击和数据转换问题,并保持您的代码更干净。

您还应该考虑您是否真的希望它是本地日期/时间或UTC日期/时间。例如,您可能想DateTime.UtcNow改用。

于 2013-05-10T09:48:01.597 回答