好的,所以我与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作为参数值,但仍然得到错误。我的脑袋即将爆炸...
答案 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();
}