Usuário com melhor resposta
apostrofe

Pergunta
-
Respostas
-
No meu caso testei a parametrização para ver se resolvia, mas não adiantou. Tive que tratar dessa maneira mesmo.
“First do it, then do it right, then do it better.” - Addy Osmani
- Marcado como Resposta RViveiros segunda-feira, 24 de junho de 2019 13:36
Todas as Respostas
-
-
olá Wallace, obrigado pelo retorno.
Sim, uso SQL Server 2012, Visual Basic 2017 em VB.
O único tratamento que coloquei na Textbox foi o Upper.
Porém, quando digito algum nome com " ' ", ele não salva no SQL.
A query que estou usando é INSERT INTO quando o registro é novo.
UPDATE, quando o registro é existente.
Aguardo retorno.
Abs
-
-
Passei por uma situação semelhante há algum tempo atrás. No meu caso tinha uma SQL semelhante a essa:
string sql ="INSERT INTO CLIENTE (NOME, CIDADE) VALUES ('{Nome}', '{Cidade}')"; database.ExecutarQuery(sql);
No entanto, se o nome inserido tivesse alguma aspa simples, dupla ou apóstrofe, a query não funcionava. Acontecia que, por ser concatenação de string, a query acabava não sendo formada corretamente. Resolvi fazendo um replace nos dados de entrada do meu formulário.
// Para INSERT, UPDATE Nome = Nome.Replace("'", "&apos").Replace("""", "&aspa"); //Para SELECT Nome.Replace("&apos","'").Replace("&aspa", """");
Experimente fazer esse tipo de tratamento e veja se funciona. Para mim resolveu perfeitamente.
“First do it, then do it right, then do it better.” - Addy Osmani
-
-
Olá, tenta ajustar o conteúdo do TextBox de uma aspa simples para duas aspas simples...
TextBox1.Text = TextBox1.Text.Replace("'", "''");
Fonte: https://stackoverflow.com/a/1586588
Se ajudou, marque como resposta! Obrigado.
-
No meu caso substitui por outro caractere e depois fiz o processo inverso para recuperar o texto na mesma forma que o usuário digitou. O importante é retirar do texto aquilo que está atrapalhando, que no seu caso é o apóstrofo.
Você retira e grava o texto modificado no banco de dados. Na hora de recuperar do banco de dados, faça o processo inverso.
“First do it, then do it right, then do it better.” - Addy Osmani
-
Ao invés de fazer esses tratamentos que a longo prazo podem te trazer problemas, você pode usar os parâmetros para fazer sua solicitação.
Por exemplo:
Dim cmd As New OleDbCommand cmd.Connection = con cmd.CommandText = "INSERT INTO MINHATABELA(CAMPO1, CAMPO2) SELECT campo1 + @seuparametro FROM MINHATABELA WHERE CAMPO2=true" cmd.Parameters.Add("@seuparametro", OleDbType.VarChar).Value = TxtRecebeParametro.Text
Se foi útil marque como respota.
Abraço! :)
-
No meu caso testei a parametrização para ver se resolvia, mas não adiantou. Tive que tratar dessa maneira mesmo.
“First do it, then do it right, then do it better.” - Addy Osmani
- Marcado como Resposta RViveiros segunda-feira, 24 de junho de 2019 13:36