Невозможно вставить данные в базу данных в asp.net?
Я получаю данную ошибку при вставке данных в базу данных. Запрос в порядке. Я не знаю, что происходит.
Невозможно вставить данные в базу данных в asp.net?
Я получаю данную ошибку при вставке данных в базу данных. Запрос в порядке. Я не знаю, что происходит.
У вас не хватает (
, )
, [
и ]
:
Insert into [User] (Name, Uid) values ('"+tb1.Text+"', '"+tb1.Text+"')";
Обратите внимание на использование '[' и ']' вокруг заповедного слова пользователя. И, как @marc_s гласит: «Нужно реально использовать параметризованные запросы для того, чтобы избежать SQL Injection»
Проверить THIS для получения дополнительной информации.
И снова: нужно действительно использовать ** параметризованные запросы **, чтобы избежать SQL Injection ..... –
Или вы всегда можете увидеть ** [this] (http: // xkcd.com/327 /) ** для получения дополнительной информации =) – jadarnel27
Старые добрые столы для бобби! – Curt
User
это ключевое слово. Вы можете использовать зарезервированные ключевые слова, окружив их скобками []
. И вы должны заключать значения в круглые скобки ()
.
Попробуйте следующее:
str = "Insert into [User] (Name, Uid) values
('" + tb1.Text + "', '" + tb1.Text + "')";
Или, более читаемым:
str = String.Format("Insert into [User] (Name, Uid) values ('{0}', '{1}')",
tb1.Text, tb2.Text);
Кроме того, как jadarnel27 отметил, пожалуйста, рассмотреть возможность использования параметризованного SQL для предотвращения SQL injection attacs.
Тщеславие вверх! – jadarnel27
=) спасибо @dennis – vini
3 вещи здесь не так.
Добавить скобки вокруг имени таблицы, как это ключевое слово:
INSERT INTO [User]
Старайтесь избегать использования ключевых слов в именах объектов в будущем. Это может сэкономить много головных болей в долгосрочной перспективе!
Добавить скобки вокруг значения, поэтому ваш запрос в виде:
INSERT INTO [TableName] (ColumnA, ColumnB) VALUES (@ParamA, @ParamB)
Самое главное (как его ошибка 1 вы выиграли» t получить подсказку, но будет страдать в долгосрочной перспективе), параметризовать ваши запросы. Это позволит избежать SQL Injection и должна быть обычной практикой при написании любой SQL-запрос:
cmd.CommandText = "Insert into [User] (Name, Uid) values (@Name, @Uid)";
cmd.Parameters.Add("@Name", SqlDbType.Nvarchar).Value = tb1.Text;
cmd.Parameters.Add("@Uid", SqlDbType.Int).Value = tb1.Text;
большое спасибо за ответ :) – vini
Обязательно: Пожалуйста, защитить свой код от [инъекции SQL] (http://en.wikipedia.org/wiki/SQL_injection). Это очень опасно. – jadarnel27
спасибо за помощь – vini