Пожалуйста, смотрите эту проблему при добавлении информации в базу данных - PullRequest
0 голосов
/ 20 февраля 2012

Я использую VB 2010 и успешно подключил его к SQL Management Studio 2008. Я могу установить соединение с базой данных, которую я назвал «TestDatabase», и могу успешно добавлять данные в таблицу базы данных. Итак, теперь проблема заключается в том, что я могу изменять только те данные, которые я хочу ввести в базу данных через код. Я хочу использовать текстовое поле, которое я создал для этой цели. Вот мой CommendText:

sqCmd.CommandText = "INSERT INTO TestTable" & "(FirstColumn, SecondColumn)" & "VALUES (textbox1,textbox1)"

Часть в строке, которую я указал как (textbox1, textbox1), предназначена для значений, которые я хочу вставить, но кажется, что вместо значения текстового поля вводится слово «textbox1».

Я думаю, что для этого есть специальный синтаксис. Пожалуйста, будьте любезны сообщить мне.

Ответы [ 2 ]

1 голос
/ 20 февраля 2012

Это потому, что вы используете его как строку. Вы можете попробовать добавить значение текстового поля inline:

sqCmd.CommandText = "INSERT INTO TestTable" & "(FirstColumn, SecondColumn)" & "VALUES (" & textbox1 & "," & textbox1 & ")"

или даже лучше взгляните на параметры sql , который является лучшим способом справиться с parameterized queries, поскольку, помимо простоты запроса, он предотвращает инъекции sql

С параметрами sql ваше утверждение может быть:

sqCmd.CommandText = "INSERT INTO TestTable" & "(FirstColumn, SecondColumn)" & "VALUES (@textboxValue,@textboxValue)"
sqCmd.Parameters.Add(new SqlParameter("@textboxValue", textbox1))

Обновление:

Ошибка, которую вы получаете, состоит в том, что вы анализируете текстовое поле как объект прямо в базе данных, а не его фактическое значение. В моем примере выше я просто предположил, что textbox1 была строковой переменной, объявленной ранее. Чтобы это исправить, вы можете изменить свои команды следующим образом:

Dim myTextBoxValue As String
myTextBoxValue = textbox1.Text
sqCmd.CommandText = "INSERT INTO TestTable" & "(FirstColumn, SecondColumn)" & "VALUES (@textboxValue,@textboxValue)"
sqCmd.Parameters.Add(new SqlParameter("@textboxValue", myTextBoxValue ))
0 голосов
/ 20 февраля 2012

Вы должны объединить строки следующим образом:

sqCmd.CommandText = "INSERT INTO TestTable (FirstColumn, SecondColumn) VALUES (" & textbox1 .Text & ", " & textbox2.Text & ")" 

Тем не менее, ваш подход совсем не хорош.Этот тип выполнения запроса открыт для атаки SQL Injection .Вы должны рассмотреть возможность использования хранимой процедуры или параметризованного запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...