-1

当我尝试将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有 1datetime列称为time

编辑:
我在 msSQL 2012 中创建的表:http: //i.imgur.com/TJ3t3y7.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();
    }
4

3 回答 3

2

看起来你需要:

 insert into table values(@time)

没有单字符引号。

于 2013-05-18T17:23:15.037 回答
2

这里的实际问题是您将参数写在引号内:

... ,'0','@cas',' ...
         ^    ^

这不会使用@cas 作为参数,您实际上是在尝试将字符串“@cas”插入该列,而不是参数@cas 的内容。

删除引号,该部分应该可以工作。

此外,不要使用字符串连接来构建 SQL,对所有内容都使用参数,这样可以避免 SQL 注入攻击或引号之类的问题。这与您正在使用的“id”、“uzivatel”、“nazev”和“dotav”参数(即方法参数)有关。

于 2013-05-18T17:48:42.713 回答
0

尝试System.Data.SqlTypes.SqlDateTime此外,在存储日期时,请考虑将它们存储为 UTC 以防止混淆。

于 2013-05-18T17:23:21.817 回答