SQL插入参数值位或日期时间获取@variablename附近的错误语法

时间:2016-07-11 13:54:29

标签: sql sql-server datetime parameters bit

好的,所以我与SQL服务器有良好的连接。我花了几个小时来查看已经问过的问题,我已经尝试了很多东西。从String.Format我的查询,我得出结论,我需要从多个注释参数化查询。我已经使用nvarchar类型变量进行了测试,但它确实有效。我遇到的问题是当我添加类型位和日期时。我不知道哪个是问题。可能是错误消息后的第一位:

@Afficher

附近的语法不正确

是位参数

以下是代码:

using(SqlConnection conn = new SqlConnection(connexion))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(
                "INSERT INTO Actualite (Titre, Sous_titre, Contenu, Image, Vignette, Video, Date_publication, Afficher) " +
                "VALUES (@Titre, @Sous_titre, @Contenu, @Image, @Vignette, @Video, @Date_publication, @Afficher", conn);
                cmd.Parameters.Add(new SqlParameter("@Titre", "Ceci est un test"));
                cmd.Parameters.Add(new SqlParameter("@Sous_titre", "Ceci est un test"));
                cmd.Parameters.Add(new SqlParameter("@Contenu", "Ceci est un test, ça l'air à marcher"));
                cmd.Parameters.Add(new SqlParameter("@Image", "minecraft.jpg"));
                cmd.Parameters.Add(new SqlParameter("@Vignette", "vminecraft.jpg"));
                cmd.Parameters.Add(new SqlParameter("@Video", "NULL"));
                cmd.Parameters.Add(new SqlParameter("@Date_publication", SqlDbType.DateTime)).Value = DateTime.Now;
                cmd.Parameters.Add(new SqlParameter("@Afficher", SqlDbType.Bit)).Value = 1;
                cmd.ExecuteNonQuery();
            } 

我尝试使用1和true作为参数值,但仍然得到错误。我的脑袋即将爆炸...

1 个答案:

答案 0 :(得分:1)

您的insert语句缺少values子句末尾的右括号。

另外,如果您希望Video列在insert语句之后包含NULL,则应该从列列表和变量列表中省略它,因此您的代码应如下所示:< / p>

using(SqlConnection conn = new SqlConnection(connexion))
{
    conn.Open();
    SqlCommand cmd = new SqlCommand(
    "INSERT INTO Actualite (Titre, Sous_titre, Contenu, Image, Vignette, Date_publication, Afficher) " +
    "VALUES (@Titre, @Sous_titre, @Contenu, @Image, @Vignette, @Date_publication, @Afficher)", conn);
    cmd.Parameters.Add(new SqlParameter("@Titre", "Ceci est un test"));
    cmd.Parameters.Add(new SqlParameter("@Sous_titre", "Ceci est un test"));
    cmd.Parameters.Add(new SqlParameter("@Contenu", "Ceci est un test, ça l'air à marcher"));
    cmd.Parameters.Add(new SqlParameter("@Image", "minecraft.jpg"));
    cmd.Parameters.Add(new SqlParameter("@Vignette", "vminecraft.jpg"));
    cmd.Parameters.Add(new SqlParameter("@Date_publication", SqlDbType.DateTime)).Value = DateTime.Now;
    cmd.Parameters.Add(new SqlParameter("@Afficher", SqlDbType.Bit)).Value = 1;
    cmd.ExecuteNonQuery();
}