Ошибка синтаксиса INSERT INTO
67 сообщений
#17 лет назад
Хочу на delphi 7 вставить запись в таблицу которая находится в Access 2003procedure TForm2.Button1Click(Sender: TObject);
begin
form1.ADOQuery1.Active:=false;
form1.ADOQuery1.SQL.Text := 'INSERT INTO (login, password) VALUES ("dsa","dsa")';
form1.ADOQuery1.Active:=true;
end;
Помимо полей login и password есть еще поле id (Счетчик) и id_key (текстовое не обязательное)
B выдает ошибку : Ошибка синтаксиса INSERT INTO
В чем моя ошибка ?? подскажите пожалуйста :?:
61 сообщение
#17 лет назад
пробовали без квадратных скобок?Насколько я помню имя таблицы пишется без них.
1090 сообщений
#17 лет назад
Неверно.Я бы скорее посоветовал заменить двойные кавычки одинарными.
И почему для выполнения INSERT-запроса, который не возвращает данные, используется ADOQuery?
581 сообщение
#17 лет назад
Query1.Active:= true - равносильно query1.Open
для запросов на изменение данных использовать query1.ExecSQL;
581 сообщение
#17 лет назад
'INSERT INTO (login, password) VALUES ("dsa","dsa")'
в самом Access запрос успешно выполняется.
67 сообщений
#17 лет назад
Цитата ("f5lab"):пробовали без квадратных скобок?
Насколько я помню имя таблицы пишется без них.
Пробовал не помогает
67 сообщений
#17 лет назад
Цитата ("alibek"):Неверно.
Я бы скорее посоветовал заменить двойные кавычки одинарными.
И почему для выполнения INSERT-запроса, который не возвращает данные, используется ADOQuery?
Ковычки тоже менял тоже самое получается.
А насчет ADOQuery, что мне тогда использовать ?? если можно поподробней

67 сообщений
#17 лет назад
Вот нписал так :procedure TForm2.Button1Click(Sender: TObject);
begin
form1.ADOQuery1.Close;
form1.ADOQuery1.SQL.Add ('INSERT INTO registuser (login, password) VALUES (''dsaas'',''dsada''


form1.ADOQuery1.ExecSQL;
И таже самая ошибка

67 сообщений
#17 лет назад
Цитата ("lyoxa"):Попробуй`login`, `password`
Пробую так : INSERT INTO registuser (login, password) VALUES ('dsaas','dsada'

Выдает ошибку "Ошибка синтаксиса в инструкции INSER INTO"
1090 сообщений
#17 лет назад
Обратные одинарные кавычки используются только в такой недобазе данных, как MySQL.В Access и MS SQL используются квадратные скобки.
login и password не являются ключевыми словами Access, поэтому причина либо в кавычках, либо в способе вызова.
1090 сообщений
#17 лет назад
Этот код сохранить в файл vbs и запустить его.Запись в БД добавляется?
Dim DBConnection
Set DBConnection = CreateObject("ADODB.Connection")
With DBConnection
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("User ID") = "Admin"
.Properties("Data Source") = "путь к базе данных"
.Open
End With
DBConnection.Execute "insert into (, ) values ('dsa','dsa')"
67 сообщений
#17 лет назад
Спасибо всем осебенно Во рабочий варинт для insert into в Access :
form1.ADOQuery1.Close;
form1.ADOQuery1.SQL.Text := 'INSERT INTO (, ) VALUES (''dsds'',''ddssada'')';
form1.ADOQuery1.ExecSQL;
Из за какохто скобочек столько волокиты

67 сообщений
#17 лет назад
Почему вот в этом коде : form1.ADOQuery1.Close;
form1.ADOQuery1.SQL.Text := 'INSERT INTO (, ) VALUES ('+ form2.Edit1.Text +','+ form2.Edit2.Text +')';
form1.ADOQuery1.ExecSQL;
выдает ошибку : параметр edit1 не имеет значения по умолчанию ????
897 сообщений
#17 лет назад
form1.ADOQuery1.SQL.Text := 'INSERT INTO (, ) VALUES ("'+ form2.Edit1.Text +'","'+ form2.Edit2.Text +'")';
67 сообщений
#17 лет назад
У меня вот так получилось form1.ADOQuery1.Close;
form1.ADOQuery1.Parameters.ParamByName('ed1').Value:=form2.Edit1.Text;
form1.ADOQuery1.Parameters.ParamByName('ed2').Value:=form2.Edit2.Text;
form1.ADOQuery1.SQL.Text := 'INSERT INTO (, ) VALUES (:ed1,:ed2)';
form1.ADOQuery1.ExecSQL;
Но вот этот вариант конечно покароче ;)
form1.ADOQuery1.SQL.Text := 'INSERT INTO (, ) VALUES ("'+ form2.Edit1.Text +'","'+ form2.Edit2.Text +'")';
1090 сообщений
#17 лет назад
Добро пожаловать, уязвимость SQL.Первый вариант правильный.
За второй вариант на собеседовании было бы однозначное "до свидания".
897 сообщений
#17 лет назад
Да я delphi в глаза не видел =)и что там в form2.Edit1.Text понятия не имею.