2013-10-27 3 views
-3

출처 : dtExcel.Rows[i][0]을 찾는근처의 구문이 잘못되었습니다 오류

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); 
     } 
    } 

전송하지 갱신


string cmdText = "insert into Planilha3 (ROTALOJ,....) values(@[email protected],@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

지금이 오류를

+0

? 'dtExcel.Rows'의 타입은 무엇입니까? – sgarizvi

+0

코드를 디버깅 할 때 정확히'dtExcel.Rows [i] [0]'은 무엇입니까? 그리고 [매개 변수화 된 쿼리] (http://www.codinghorror.com/blog/2005/04/give-me-parameterized-sql-or-give-me-death.html)를 사용하십시오. –

답변

0

I를주고있다 F 난 당신의 코드가 제대로 구문 오류가 그러나이 코드가 정말 문제를 요구하는 업데이트 쿼리

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

의 끝 부분에 가까운 parenthesys에 의해 발생 읽어 보시기 바랍니다.

입력 텍스트에서 문자열 연결을 끊는 하나 이상의 작은 따옴표가 나타날 때 구문 오류가 발생하지 않도록하려면 매개 변수가있는 쿼리를 사용해야합니다.
그리고, 더 중요한 것은 바로이 첫 번째 쿼리는이 시점에서

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

이되는 동안

따라서, 예를 들어, 내부 업데이트 코드가

string cmdText = "UPDATE Planilha SET LOJA [email protected] 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(); 

된다는 SQL 주입을 방지하기 위해 해결해야 할 문제. ROTA 열의 데이터 유형은 무엇입니까?
숫자 형식 인 경우 dtExcel에서 얻은 값을 숫자 값으로 변환해야합니다. 정수의 경우, 예를 들어

는 dtExcel``무엇

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