Jump to content
Fellipe

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

Recommended Posts

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

Share this post


Link to post
Share on other sites
NunoDinis

Publica o resto do código e a linha do erro.


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other 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.

Edited by Rui Carlos

Share this post


Link to post
Share on other 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,

  • Vote 2

Pedro Martins

Sharing is Knowledge!

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.