Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Fellipe

[Resolvido] [Error] Incorrect syntax near ')'

Mensagens Recomendadas

Fellipe

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

eu to achando dtExcel.Rows[0] não está mandado o ROTA para o Upload...

Muito obrigado pela sua atenção

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Geras

Vejo 2 problemas:

1 -

Tens no final do teu comando de UPDATE o seguinte: ")"

Estás a fechar um parêntesis sem nunca o abrir?

2 -

Na tua iteração, quando passas pelo comando de update na seguinte linha ... :

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

... estou a supor que poderás ter na Linha no campo [0] (dtExcel.Rows[0]) uma string que contém uma pelica. Para isso tens que tratar desse caracter especial se queres mesmo construir uma string para o comando de update.

Para tratar isso:

No caso de ser para SQL Server ou SQL Lite, deves duplicar a pelica.

No caso de MySQL deves colocar um backslash antes da pelica.

Editado por Rui Carlos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rechousa

Viva,

Eu vejo um problema muito sério que tens no teu código que se chama vulnerabilidade a ataques por SQL Injection e, resolvendo esse problema, resolves o problema dos parêntises.

O que tu tens:

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

O que deverias ter:

SqlCommand cmd = new SqlCommand("UPDATE Planilha SET LOJA = @Loja where ROTA = @Rota", conexao);

cmd.Parameters.AddWithValue("@Loja", dtExcel.Rows[i][1]);
cmd.Parameters.AddWithValue("@Rota", dtExcel.Rows[i][0]);

cmd.ExecuteNonQuery();

Desta forma, fica muito mais "clean" (sem teres confusões com abre e fecha plicas para guardar as strings, etc) e fica muito mais protegido.

Espero ter ajudado,

  • Voto 2

Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.