Usuário com melhor resposta
Query String com erro.

Pergunta
-
Eu tenho uma query string abaixo a qual faço um select numa tabela com 2 tipos de campos (nvarchar e numeric)
os campos numeric estão com replace. Mas esta dando o seguinte erro: Incorrect syntax near 'DE';
string _strSQL02 = "SELECT * FROM EPS WHERE EPS = '" + TextBoxEPS.Text + "' AND RQPS = '" + TextBoxRQPS.Text + "' AND NORMAR = '" + TextBoxNORMAR.Text + "' AND DIAMETRO = " + TextBoxNORMAR.Text.Replace(',', '.') + " AND FAIXA1 = " + TextBoxFAIXA1.Text.Replace(',', '.') + " AND FAIXA2 = " + TextBoxFAIXA2.Text.Replace(',', '.') + " AND CLASSEMARAIZ = '" + TextBoxCLASSEMARAIZ.Text + "' AND CLASSEMAENCH = '" + TextBoxCLASSEMAENCH.Text + "' AND DIAMMARAIZ = " + TextBoxDIAMMARAIZ.Text.Replace(',', '.') + " AND DIAMMAENCH = " + TextBoxDIAMMAENCH.Text.Replace(',', '.') + " AND PSOLDAGEM = '" + ComboBoxPSOLDAGEM.Text + "' AND CODMAT = '" + ComboBoxCODMAT.Text + "' AND PROCESSORAIZ = '" + ComboboxPROCESSORAIZ.Text + "' AND PROCESSOENCH = '" + ComboboxPROCESSOENCH.Text + "' AND PPROGRESSAO = '" + ComboboxPPROGRESSAO.Text + "' AND TIPOPROCESSO = '" + ComboboxTIPOPROCESSO.Text + "' AND TIPOJUNTA = '" + ComboboxTIPOJUNTA.Text + "' AND TRATTERMICO = '" + ComboboxTRATTERMICO.Text + "' AND PREPOSAQUECIMENTO = '" + ComboboxPREPOSAQUECIMENTO.Text + "'";
Respostas
-
o erro não deve estourar na sua variável strSQL02 e sim no ExecuteNonQuery(),
fiz um exemplo rápido aqui, coleque o break point na linha da sua variável quando o ponteiro passar dela vc posiciona seu mouse em cima do seu command faz isso aqui:
()
Diego Almeida Barreto System Analyst / Software Developer
- Editado Diego de Almeida Barreto (Lewis) quarta-feira, 24 de julho de 2013 20:27 melhorando pq ele é burro
- Marcado como Resposta ricardoti2012 quinta-feira, 25 de julho de 2013 11:34
Todas as Respostas
-
Paulo_Ti, blxx cara.
Da forma que vc está montando a sua query, você pode se deparar com erros de paramentro, causado por uma String que contenha apóstrofo (') , pois a presença do apóstrofo vai quebrar a sua string,
Ex:
var parametro = "fgfgf'lçk'fdgdgfdg"; var query = "Select * from where Nome ='" + parametro + "'";
se vc pegar essa query e rodar no SQL verá que a string estará quebrada....paleativamente vc pode dar um replace na sua query para tirar os apóstrofo , mas aconselho a trabalhar com Parameters.AddWithValue do SqlCommand , até por segurança para evitar um SQL Injection
Grande abraço :)
Diego Almeida Barreto System Analyst / Software Developer
- Sugerido como Resposta Diego de Almeida Barreto (Lewis) quarta-feira, 24 de julho de 2013 19:00
- Editado Diego de Almeida Barreto (Lewis) quarta-feira, 24 de julho de 2013 19:01 melhorando a resposta
-
Diego
Não existe apóstrofo nenhum. Eu olhei cada campo. O replace que existe são para o campos numeric(18,2) que são valores tipo 2,3 ou 24,7 que troca a "," pelo "." para poder rodar a query a qual ja uso com esse numero em outroas casos no meu projeto.
Então o erro não é esse.
Se alguem puder me ajudar eu agradeço
Muito Obrigado.
-
Faz o seguinte,
Coloca um break point nessa variável e execulta o programa...... na hora q passar na sua variável query clica na lupinha e pega a query que ele gerou e joga no SQL para ver qual parâmetro ta entrando errado !!!!!!!
Diego Almeida Barreto System Analyst / Software Developer
- Sugerido como Resposta Diego de Almeida Barreto (Lewis) quarta-feira, 24 de julho de 2013 19:17
- Editado Diego de Almeida Barreto (Lewis) quarta-feira, 24 de julho de 2013 19:18 novo
-
-
o erro não deve estourar na sua variável strSQL02 e sim no ExecuteNonQuery(),
fiz um exemplo rápido aqui, coleque o break point na linha da sua variável quando o ponteiro passar dela vc posiciona seu mouse em cima do seu command faz isso aqui:
()
Diego Almeida Barreto System Analyst / Software Developer
- Editado Diego de Almeida Barreto (Lewis) quarta-feira, 24 de julho de 2013 20:27 melhorando pq ele é burro
- Marcado como Resposta ricardoti2012 quinta-feira, 25 de julho de 2013 11:34
-
Olá Paulo,
acredito que seja mais fácil a sugestão do Diego, colocar um breakpoint na variável do seu SQL, esperar preenchê-la e rodar o valor da variável (a query) no SQL Management Studio ou o programa que esteja utilizando pra trabalhar com banco de dados, porque o programa te dará o ponto exato do erro:
" Incorrect syntax near 'DE';"
Daí vai ficar fácil identificar.
Abs
Alexandre Felipe Malavasi Cardoso
-
Eu peguei a query e joguei no meu sql do jeito que foi explicado.
Da erro porem não consegui entender o erro ja que não diz aonde esta i erro.
Eu pelo menos não entendi.
Segue a query
SELECT * FROM EPS WHERE EPS = 'EPS00000000000000' AND RQPS = 'RQPS1' AND NORMAR
= 'NORMA DE REFERENCIA' AND DIAMETRO = NORMA DE REFERENCIA AND FAIXA1 = 1.60 AND
FAIXA2 = 14.20 AND CLASSEMARAIZ = 'E2345-0988' AND CLASSEMAENCH = 'JTG0765433'
AND DIAMMARAIZ = 3.60 AND DIAMMAENCH = 4.50 AND PSOLDAGEM = '2F' AND CODMAT =
'A036-01' AND PROCESSORAIZ = 'BRA' AND PROCESSOENCH = 'CAM' AND PPROGRESSAO =
'DESCENDENTE' AND TIPOPROCESSO = 'MANUAL' AND TIPOJUNTA = 'ANGULAR' AND
TRATTERMICO = 'NÃO' AND PREPOSAQUECIMENTO = 'NÃO'Agora o erro do SQL:
" Incorrect syntax near 'DE';"
-
-
-
Iai Paulo blxx meu,
tem um parâmetro na sua string q falta o apóstrofo para a concatenação do seu TextBoxNORMAR
DIAMETRO = " + TextBoxNORMAR.Text.Replace(',', '.') + " // Deixa assim DIAMETRO = '" + TextBoxNORMAR.Text.Replace(',', '.') + "'
Abraço :)
Diego Almeida Barreto System Analyst / Software Developer
- Sugerido como Resposta Diego de Almeida Barreto (Lewis) sexta-feira, 26 de julho de 2013 23:56
- Editado Diego de Almeida Barreto (Lewis) sexta-feira, 26 de julho de 2013 23:59 pronto