2013-09-14 4 views
0

Я встретил странную проблему. Я хотел добавить строку и строку, но она не добавилась вместе в действительности.VB Строка Конкатенация Неполная

Ниже мой код:

sql = "insert into Table (a,b,c,d) values ('" + a.value + "',b,'" + c.value + "',0)" 

Я использую MessageBox, чтобы показать эту строку и он просто показывает

insert into Table (a,b,c,d) values ('a 

Как я могу изменить его?

+0

Какова ценность 'a.value'? –

+2

Просим выполнить поиск по «конкатенации строк VB» для основ языка, а затем сделайте свое ** основное ** предложение и исследование «параметризованных запросов» и «SQL-инъекций» для правильного способа обработки вашего SQL. –

ответ

0

Всегда используйте амперсанд «&» при добавлении строк в VB.NET.

Изменить код

sql = "insert into Table (a,b,c,d) values ('" & a.value & "',b,'" & c.value & "',0)" 
+3

Или еще лучше, измените использование параметризованного оператора и полностью устраните конкатенацию (и одновременно уменьшите риск SQL-инъекции). –

+0

Спасибо за ответ. Однако, если я использую '&', он все равно разбивается на 'a.value'. – CYB

+0

@CYB что такое 'a'? и какова ценность 'a.value'? – Damith

0

вы ча использовать + ниже

sql = "insert into Table (a,b,c,d) values ('" + a.value.ToString() + "',b,'" + c.value.ToString() + "',0)" 

вам необходимо преобразовать значения в строку, если они уже не строки

но здесь вы указываете ,b, без '', если это строка, то вам нужно добавить, что ниже

sql = "insert into Table (a,b,c,d) values ('" + a.value.ToString() + "','b','" + c.value.ToString() + "',0)" 

Если вы используете оператор &, то вам не нужно преобразовывать его в строки. подробнее об этой проверке this ссылка.

все выше для строки Конкатенация, но относительно оператора SQL Я бы рекомендовал вам использовать параметризованный оператор SQL.

How do I create a parameterized SQL query? Why Should I?

Смежные вопросы