Jump to content

Caracteres especiais SQL


Recommended Posts

dipacheco

Boas pessoal... td bem?

Ha alguma maneira de o meu prog aceitar caracteres que possam entrar em conflito com as strings de inserção por exemplo?? É que tnh varios nomes na BD que contêm ' ou & ou % ... e quando aparece um desses caracteres acontece borrada!... ha alguma maneira de contornar isto sem mudar o nome dos dados da BD??

Link to post
Share on other sites
dipacheco

parênteses rectos?? no vb certo??

tipo isto...

inserir = "INSERT INTO [Tabela]([Numero],[Nome1]) VALUES ('" & TextBox4.Text & "','" & TextBox1.Text & "')"
command = New SqlCommand(inserir, connect)
command.executeNonQuery

Link to post
Share on other sites
dipacheco

nao funciona na mesma... o caracter especial é o ;

ou sera q estou a fazer algo mal?? so estou a colocar parêntesis rectos no nome da tabela e dos campos que podem ter conflito... nos outros nao coloquei. tenho de colocar em todos?

Link to post
Share on other sites

Pensei que na tua questão estavas-te a referir ao nome das tabelas/colunas..

Se esse carácter vier de uma das textboxes, tens de usar parâmetros, alias, devias sempre usar parâmetros :P

Pedro Martins

Não respondo a duvidas por PM

Link to post
Share on other sites

Isso não é solução, o trabalho que vais ter a colocar isso em todo o programa e criares parâmetros em todas as tuas consultas é o mesmo

Se fores persistente e não quiseres usar parâmetros, substitui os caracteres especiais por outros, o problema é que sempre que fores ler os registos à BD, tens de fazer o inverso

Pedro Martins

Não respondo a duvidas por PM

Link to post
Share on other sites
Rechousa

Se esse carácter vier de uma das textboxes, tens de usar parâmetros, alias, devias sempre usar parâmetros :P

Totalmente de acordo! Não só resolves o problema do ponto e vírgula, como plicas e ataque de SQL Injection.

eu n faço ideia como usar parametros sinceramente e faz-m mt confusao!

Pesquisa e se tiveres dúvidas é só dizeres.

A questão até é simples, basicamente é constituída por duas coisas:

1) Definição dos parâmetros na Query, exemplo:

inserir = "INSERT INTO [Tabela]([Numero],[Nome1]) VALUES (@Numero, @Nome1)"

2) Adicionar os parâmetros à SQL Command, exemplo:

command = New SqlCommand(inserir, connect)
command.Parameters.AddWithValue("@Numero", TextBox4.Text)
command.Parameters.AddWithValue("@Nome1", TextBox1.Text)
command.executeNonQuery

Pedro Martins

Sharing is Knowledge!

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

Link to post
Share on other sites
dipacheco

rechousa... percebi o exemplo que deste... mas imagina que tenho um insert com 20 campos em q so 3 é que podem ter caracteres especias... tenho de passar tudo por parametros ou basta passar esses 3?? no caso de serem apenas esses 3 os simbolos da @ e dos [] so vao para esses campos tambem? obrigado.

Link to post
Share on other sites
Rechousa

mas isso vai aumentar exponencialmente as linhas de codigo do meu programa! eheh

Mas reduz-te o número de dores de cabeça  :wallbash: eheheh

eu tenho muitos inserts ao longo do programa... mas se tem que ser, tem que ser! :D

Aposta nisso, a sério! Ganhas a longo prazo. E o trabalho não é muito, porque a tua instrução SQL fica mais fácil de ler (não tens plicas, concatenação de strings, enfim, aquela confusão toda, tens apenas parâmetros separados por vírgula) e a única coisa que tens que fazer é adicionar o valor do parâmetro em baixo, nothing else!

Vá, bom trabalho com essa alteração no código.

Pedro Martins

Sharing is Knowledge!

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

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.