VB.NET - Что не так с моим SQLinsert? Доступ к базе данных - PullRequest
0 голосов
/ 27 июня 2011

У меня есть база данных с кучей вещей, и сейчас я читаю данные, выполняю некоторую обработку, а затем помещаю ее в новую базу данных.Мой код генерирует эту строку:

query_string = "INSERT INTO OrgPhrase (EXACT_PHRASE,Org_ID) VALUES (HELLO,123)"

Затем он используется следующим образом:

Dim InsertCmd = New System.Data.OleDb.OleDbCommand(query_string, connection)
InsertCmd.ExecuteNonQuery()

Связанная база данных (соединение OLEdb) существует и открывается нормально, со всеми таблицами и столбцами, которые она пытаетсяработать с уже существующими.Я получаю сообщение об ошибке «Нет значения для одного или нескольких обязательных параметров»

Я что-то упустил?Я написала что-то не так?У меня нет большого опыта работы с базами данных, но у меня никогда не возникало таких проблем при вставке.

Ответы [ 2 ]

3 голосов
/ 27 июня 2011

Я считаю, что запрос должен быть

query_string = "INSERT INTO OrgPhrase (EXACT_PHRASE,Org_ID) VALUES ('HELLO',123)"

Кроме того, может случиться, что в таблице более 2 столбцов, которые НЕ равны NUll, и значения для них являются обязательными.

2 голосов
/ 28 июня 2011

Рассмотрим параметризацию строки запроса.Есть несколько причин для этого.Во-первых, вы можете передавать значения, не беспокоясь о том, нужны ли вам одинарные кавычки.Во-вторых, вы предотвращаете внедрение SQL.

query_string = "INSERT INTO OrgPhrase (EXACT_PHRASE,Org_ID) VALUES (@ExactPhrase,@OrgId)" 

Затем вы создаете параметры на основе имен параметров в строке.Если, конечно, ваша строка запроса всегда имеет одинаковые значения, но это звучит слишком жестко, чтобы быть хорошим.

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