错误附近的语法不正确

时间:2013-10-27 19:59:14

标签: c#

来源:

for (int i = 0; i < dtExcel.Rows.Count; i++)
{
    string bn = "select * from Planilha where ROTA=" + dtExcel.Rows[i][0];
    SqlCommand Queryyy = new SqlCommand(bn, conexao);
    SqlDataReader drr;
    drr = Queryyy.ExecuteReader();
    if (drr.Read() == true)
    {
        try
        {
            SqlCommand cmd = new SqlCommand("UPDATE Planilha SET LOJA ='" + dtExcel.Rows[i][1] + "' where ROTA = " + dtExcel.Rows[i][0] + ")", conexao);
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Erro1 " + ex.Message);
        }
    }

发现dtExcel.Rows[i][0]未发送更新


 string cmdText = "insert into Planilha3 (ROTALOJ,....) values(@p0+@p1,@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8,@p9,@p10,@p11,@p12,@p13,@p14,@p15,@p16,@p17,@p18,@p19,@p20,@p21,@p22,@p23,@p24,@p25,@p26,@p27,@p28,@p29,@p30,@p31,@p32,@p33,@p34,@p35,@p36,@p37,@p38,@p39,@p40,@p41,@p42,@p43,@p44,@p45,@p46,@p47,@48,@p49,@50,@51,@52,@53,@54,@55,@56,@57,@58,@p59,@p60,@p61,@p62)";
                        SqlCommand cmd = new SqlCommand(cmdText, conexao);
                        cmd.Parameters.AddWithValue("@p0", dtExcel.Rows[i][0]);
                        cmd.Parameters.AddWithValue("@p1", dtExcel.Rows[i][1]);
                        cmd.Parameters.AddWithValue("@p2", dtExcel.Rows[i][2]);
                        cmd.Parameters.AddWithValue("@p3", dtExcel.Rows[i][3]);
                        cmd.Parameters.AddWithValue("@p4", dtExcel.Rows[i][4]);
                        cmd.Parameters.AddWithValue("@p5", dtExcel.Rows[i][5]);
                        cmd.Parameters.AddWithValue("@p6", dtExcel.Rows[i][6]);
                        cmd.Parameters.AddWithValue("@p7", dtExcel.Rows[i][7]);
                        cmd.Parameters.AddWithValue("@p8", dtExcel.Rows[i][8]);
                        cmd.Parameters.AddWithValue("@p9", dtExcel.Rows[i][9]);
                        cmd.Parameters.AddWithValue("@p10", dtExcel.Rows[i][10]);
                        cmd.Parameters.AddWithValue("@p11", dtExcel.Rows[i][11]);
                        cmd.Parameters.AddWithValue("@p12", dtExcel.Rows[i][12]);
                        cmd.Parameters.AddWithValue("@p13", dtExcel.Rows[i][13]);
                        cmd.Parameters.AddWithValue("@p14", dtExcel.Rows[i][14]);
                        cmd.Parameters.AddWithValue("@p15", dtExcel.Rows[i][15]);
                        cmd.Parameters.AddWithValue("@p16", dtExcel.Rows[i][16]);
                        cmd.Parameters.AddWithValue("@p17", dtExcel.Rows[i][17]);
                        cmd.Parameters.AddWithValue("@p18", dtExcel.Rows[i][18]);
                        cmd.Parameters.AddWithValue("@p19", dtExcel.Rows[i][19]);
                        cmd.Parameters.AddWithValue("@p20", dtExcel.Rows[i][20]);
                        cmd.Parameters.AddWithValue("@p21", dtExcel.Rows[i][21]);
                        cmd.Parameters.AddWithValue("@p22", dtExcel.Rows[i][22]);
                        cmd.Parameters.AddWithValue("@p23", dtExcel.Rows[i][23]);
                        cmd.Parameters.AddWithValue("@p24", dtExcel.Rows[i][24]);
                        cmd.Parameters.AddWithValue("@p25", dtExcel.Rows[i][25]);
                        cmd.Parameters.AddWithValue("@p26", dtExcel.Rows[i][26]);
                        cmd.Parameters.AddWithValue("@p27", dtExcel.Rows[i][27]);
                        cmd.Parameters.AddWithValue("@p28", dtExcel.Rows[i][28]);
                        cmd.Parameters.AddWithValue("@p29", dtExcel.Rows[i][29]);
                        cmd.Parameters.AddWithValue("@p30", dtExcel.Rows[i][30]);
                        cmd.Parameters.AddWithValue("@p31", dtExcel.Rows[i][31]);
                        cmd.Parameters.AddWithValue("@p32", dtExcel.Rows[i][32]);
                        cmd.Parameters.AddWithValue("@p33", dtExcel.Rows[i][33]);
                        cmd.Parameters.AddWithValue("@p34", dtExcel.Rows[i][34]);
                        cmd.Parameters.AddWithValue("@p35", dtExcel.Rows[i][35]);
                        cmd.Parameters.AddWithValue("@p36", dtExcel.Rows[i][36]);
                        cmd.Parameters.AddWithValue("@p37", dtExcel.Rows[i][37]);
                        cmd.Parameters.AddWithValue("@p38", dtExcel.Rows[i][38]);
                        cmd.Parameters.AddWithValue("@p39", dtExcel.Rows[i][39]);
                        cmd.Parameters.AddWithValue("@p40", dtExcel.Rows[i][40]);
                        cmd.Parameters.AddWithValue("@p41", dtExcel.Rows[i][41]);
                        cmd.Parameters.AddWithValue("@p42", dtExcel.Rows[i][42]);
                        cmd.Parameters.AddWithValue("@p43", dtExcel.Rows[i][43]);
                        cmd.Parameters.AddWithValue("@p44", dtExcel.Rows[i][44]);
                        cmd.Parameters.AddWithValue("@p45", dtExcel.Rows[i][45]);
                        cmd.Parameters.AddWithValue("@p46", dtExcel.Rows[i][46]);
                        cmd.Parameters.AddWithValue("@p47", dtExcel.Rows[i][47]);
                        cmd.Parameters.AddWithValue("@p48", dtExcel.Rows[i][48]);
                        cmd.Parameters.AddWithValue("@p49", dtExcel.Rows[i][49]);
                        cmd.Parameters.AddWithValue("@p50", dtExcel.Rows[i][50]);
                        cmd.Parameters.AddWithValue("@p51", dtExcel.Rows[i][51]);
                        cmd.Parameters.AddWithValue("@p52", dtExcel.Rows[i][52]);
                        cmd.Parameters.AddWithValue("@p53", dtExcel.Rows[i][53]);
                        cmd.Parameters.AddWithValue("@p54", dtExcel.Rows[i][54]);
                        cmd.Parameters.AddWithValue("@p55", dtExcel.Rows[i][55]);
                        cmd.Parameters.AddWithValue("@p56", dtExcel.Rows[i][56]);
                        cmd.Parameters.AddWithValue("@p57", dtExcel.Rows[i][57]);
                        cmd.Parameters.AddWithValue("@p58", dtExcel.Rows[i][58]);
                        cmd.Parameters.AddWithValue("@p59", dtExcel.Rows[i][59]);
                        cmd.Parameters.AddWithValue("@p60", dtExcel.Rows[i][60]);
                        cmd.Parameters.AddWithValue("@p61", dtExcel.Rows[i][61]);
                        cmd.Parameters.AddWithValue("@p62", dtExcel.Rows[i][62]);
                        cmd.Parameters.AddWithValue("@p63", dtExcel.Rows[i][63]);
                        cmd.ExecuteNonQuery();

                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Erro2 " + ex.Message);
                        continue;
                    }

enter image description here

现在提供此错误

1 个答案:

答案 0 :(得分:0)

如果我正确读取了您的代码,则语法错误是由更新查询末尾的close括号引起的

  SqlCommand cmd = new SqlCommand("UPDATE Planilha SET LOJA ='" + dtExcel.Rows[i][1] + 
                   "' where ROTA = " + dtExcel.Rows[i][0] , conexao);
                                                         ^^^ removed 

然而,这段代码确实是在寻找麻烦。

您需要开始使用参数化查询,以避免在输入文本中出现一个或多个单引号导致字符串连接时出现语法错误。
而且,更重要的是,避免Sql注入

因此,例如,内部更新代码变为

string cmdText = "UPDATE Planilha SET LOJA =@p1 where ROTA = @p2";
SqlCommand cmd = new SqlCommand(cmdText, conexao);
cmd.Parameters.AddWithValue("@p1", dtExcel.Rows[i][1]);
cmd.Parameters.AddWithValue("@p2", dtExcel.Rows[i][0].ToString());
cmd.ExecuteNonQuery();

,而第一个查询变为

string bn = "select * from Planilha where ROTA=@p1";
SqlCommand Queryyy = new SqlCommand(bn, conexao);
Queryyy.Parameters.AddWithValue("@p1", dtExcel.Rows[i][0]);
....

此时只有一个问题需要解决。 ROTA列的数据类型是什么?
如果它是数字类型,则需要将从dtExcel获得的值转换为数值。

例如在整数的情况下

Queryyy.Parameters.AddWithValue("@p1", Convert.ToInt32(dtExcel.Rows[i][0]));