从c#中插入datetime到SQL Server数据库
本文关键字:SQL Server 数据库 datetime 插入 | 更新日期: 2023-09-27 18:14:10
当我尝试将datetime
值插入SQL Server数据库时,我得到此错误:
代码:从字符串
转换日期和/或时间时,转换失败
connection.Open();
SqlCommand command = new SqlCommand("insert into table values(@time)", connection);
command.Parameters.AddWithValue("@time", DateTime.Now);
command.ExecuteNonQuery();
connection.Close();
表table
有1列datetime
称为time
。
编辑:
我的表创建在msSQL 2012: https://i.stack.imgur.com/xaxag.png
我的实际代码是:
public void vytvorDotaz(String uzivatel, DateTime cas, String nazev, String dotaz)
{
int id = getMaxID() + 1;
connection.Open();
SqlCommand command = new SqlCommand("insert into otazky values('" + id + "', '" + uzivatel + "', '0','0','0','@cas','" + nazev + "','" + dotaz + "')", connection);
command.Parameters.AddWithValue("@cas", DateTime.Now);
command.ExecuteNonQuery();
connection.Close();
}
这里的实际问题是您将参数写在引号内:
... ,'0','@cas',' ...
^ ^
这将不使用@cas作为参数,您实际上试图将字符串"@cas"插入该列,而不是参数@cas的内容。
去掉引号,那部分就可以了。
另外,不要使用字符串连接来构建SQL,使用参数来处理所有事情,这样可以避免SQL注入攻击或引号之类的麻烦。这与您正在使用的"id"、"uzivatel"、"nazev"answers"dotav"参数(即方法参数)有关。
看起来你需要:
insert into table values(@time)
不带单引号
尝试System.Data.SqlTypes.SqlDateTime另外,当存储日期时,请考虑将它们存储为UTC,以防止混淆