','附近的语法不正确

时间:2012-02-20 09:50:33

标签: sql asp-classic

我花了一整天的时间才弄清楚我的编码有什么问题。有人可以告诉我,为了使我的编码工作,我应该改变什么。谢谢你:)

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
        SqlCommand cmd = new SqlCommand("Insert into ExpTab (username,month,ex1,p1,ex2,p2,ex3,p3,ex4,p4,ex5,p5,ex6,p6,ex7,p7,ex8,p8,,p3,p4,p5,p6,p7,p8) Values (@name,@month1,@ex1s,@p1s,@ex2s,@p2s,@ex3s,@p3s,@ex4s,@p4s,@ex5s,@p5s,@ex6s,@p6s,@ex7s,@p7s,@ex8s,@p8s)", conn);

    cmd.CommandType = CommandType.Text;
    cmd.Parameters.AddWithValue("@name", Membership.GetUser().UserName);
    cmd.Parameters.AddWithValue("@month1", Label1.Text);
    cmd.Parameters.AddWithValue("@ex1s", Label18.Text);
    cmd.Parameters.AddWithValue("@p1s", Label20.Text);
    cmd.Parameters.AddWithValue("@ex2s", Label2.Text);
    cmd.Parameters.AddWithValue("@p2s", Label21.Text);
    cmd.Parameters.AddWithValue("@ex3s", Label3.Text);
    cmd.Parameters.AddWithValue("@p3s", Label22.Text);
    cmd.Parameters.AddWithValue("@ex4s", Label4.Text);
    cmd.Parameters.AddWithValue("@p4s", Label23.Text);
    cmd.Parameters.AddWithValue("@ex5s", Label5.Text);
    cmd.Parameters.AddWithValue("@p5s", Label24.Text);
    cmd.Parameters.AddWithValue("@ex6s", Label6.Text);
    cmd.Parameters.AddWithValue("@p6s", Label25.Text);
    cmd.Parameters.AddWithValue("@ex7s", Label7.Text);
    cmd.Parameters.AddWithValue("@p7s", Label26.Text);
    cmd.Parameters.AddWithValue("@ex8s", Label8.Text);     
    cmd.Parameters.AddWithValue("@p8s", Label27.Text);

    conn.Open();
    cmd.ExecuteNonQuery();

我真的需要帮助:(

7 个答案:

答案 0 :(得分:6)

这个小片段是什么:

... p7,ex8,p8,,p3,p4,p5 ...
             ^^

意味着什么?

顺便说一句,这是一个修辞问题,因为至少有一位评论者不理解:-)这就是你的麻烦所在。

事实上,由于你有24个列名(不包括逗号之间的空名),只有18个值要插入(并且也基于列/值名称),因此几乎可以确定整个部分来自第二个逗号以后是多余的。尝试删除整个,,p3,p4,p5,p6,p7,p8并使用:

insert into ExpTab ( 
    username, month, ex1, p1, ex2, p2, ex3, p3,
    ex4, p4, ex5, p5, ex6, p6, ex7, p7, ex8, p8
) values (
    @name, @month1, @ex1s, @p1s, @ex2s, @p2s, @ex3s, @p3s,
    @ex4s, @p4s, @ex5s, @p5s, @ex6s, @p6s, @ex7s, @p7s, @ex8s, @p8s)

那应该解决你的问题。

答案 1 :(得分:1)

您的INSERT语句中有2个逗号彼此相邻:

ex8,p8,,p3,p4

删除其中一个逗号,这样可以解决您的错误。

答案 2 :(得分:1)

你的代码中有一个额外的逗号“p8 ,, p3” - 删除它。此外,如果您下次发布完整的错误消息而不是依赖我们的心灵调试技能会有所帮助: - )

答案 3 :(得分:1)

列定义中有两个逗号:..p8,,p3..

答案 4 :(得分:1)

我已经对你的陈述进行了修改,使用下面的方法

  SqlCommand cmd = new SqlCommand("Insert into ExpTab (username,month,ex1,p1,ex2,p2,ex3,p3,ex4,p4,ex5,p5,ex6,p6,ex7,p7,ex8,p8,p3,p4,p5,p6,p7,p8) Values (@name,@month1,@ex1s,@p1s,@ex2s,@p2s,@ex3s,@p3s,@ex4s,@p4s,@ex5s,@p5s,@ex6s,@p6s,@ex7s,@p7s,@ex8s,@p8s)", conn);

答案 5 :(得分:1)

在你的SQL中你有这个

ex8,p8,,p3,p4,p5,p6,p7,p8)

在p8和p3之间,你有,,,或者应该有一个参数。

答案 6 :(得分:0)

检查你的查询,你有这个地方,

还要确保转义输入数据,因为SQL注入很容易查询