2013-04-01 3 views
0

Я работаю с базой данных доступа, у меня есть таблица пользователей.Вставить запрос в Access C#

У меня есть вставки запрос:

DataBase.Execute("Insert into Users(UserID,FirstName,SecondName,UserName,Password,Permission) Values(" + 
    obj.PersonID + 
    ",'" + obj.FirstName + 
    "','" + obj.LastName + 
    "','" + username + 
    "','" + psw + 
    "'," + permission + ")"); 

Я проверил все значения параметров, что они такие же, как те, за столом ... но он говорит, что есть ошибка синтаксиса в моем ВСТАВИТЬ запрос.

+0

Пожалуйста, помогите мне, ребята! – ranifisch

+0

Является ли UserID autonumber или нет? –

+0

@ranifisch вы должны использовать параметры - это должно помочь вам избежать таких проблем – Alex

ответ

0

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

string insertQuery = "INSERT INTO table (field1, field2, field3) VALUES (@par1, @par2, @par3)"; 
Database.Execute(insertQuery, var1, var2, var3); 

где var1, var2 и var3 являются переменные, содержащие значения, которые нужно вставить.

Существует более простая (но еще хуже, потому что она по-прежнему уязвима для SQL-инъекции), что сделает ваш код более читаемым, чем пример, который вы опубликовали: string.format. Вместо этого:

DataBase.Execute("Insert into Users(UserID,FirstName,SecondName,UserName,Password,Permission) Values(" + 
obj.PersonID + 
",'" + obj.FirstName + 
"','" + obj.LastName + 
"','" + username + 
"','" + psw + 
"'," + permission + ")"); 

вы могли бы сделать что-то вроде этого, гораздо яснее и гораздо более трудно забыл некоторые простые цитаты:

string query = string.Format("Insert into Users (UserID,FirstName,SecondName,UserName,Password,Permission) Values({0}, '{1}', '{2}', '{3}', '{4}', {5})", obj.PersonID, obj.FirstName, obj.LastName, username, psw, permission); 
Database.Execute(query); 

рассматривать это как краткий пример использования параметров для вставки : http://msdn.microsoft.com/en-us/library/webmatrix.data.database.execute(v=vs.111).aspx

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