如何存储'日期'在SQL Server 2005中使用c#查询
本文关键字:2005 Server 查询 SQL 日期 何存储 存储 | 更新日期: 2023-09-27 18:13:11
使用c#在数据库(SQL server 2005)中存储日期时出现错误我用的是
DateTime mydate = DateTime.Now;
insert into mytablename (appdate) values('"+mydate.ToShortDateString()+"');
但是当我运行查询
时显示错误也试过了,
mydate.ToShortDateString().ToString("dd-MMM-yyyy HH:mm:ss")
在c#中,仍然显示错误的编辑器。
如何使用c#查询在SQL Server 2005中存储'date'
使用参数化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
。
您的查询试图在DateTime字段中插入字符串。当然这行不通。
正确的插入方式是通过如下的参数化查询
string insertSQL = "insert into mytablename (appdate) values(@dt)";
SqlCommand cmd = new SqlCommand(insertSQL, con);
cmd.Parameters.AddWithValue("@dt", mydate);
cmd.ExecuteNonQuery();
这里我假设连接已经初始化并打开了