Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2015, 20:22   #1
SASFM
Форумчанин
 
Аватар для SASFM
 
Регистрация: 26.03.2015
Сообщений: 191
По умолчанию Ошибка при использование инструкции INSERT

Здравствуйте. Скажите пожалуйста как можно добавить данные в БД SQLite в Delphi XE7. Использую такие компоненты:
  1. FDConnection (DriverID=sQLite, LoginPrompt=False, DataBase=MyDatabaseName)
  2. FDQuery1 (Connection=FDConnection1, SQL=select * from MyDatabaseName, Active=true)
  3. DataSource (DataSet=FDQuery1)
  4. DBGrid1 (DataSource=DataSource1)
  5. FDPhysSQLiteDriverLink
  6. FDGUIxWaitCursor
А код для добавление данных выглядит вот так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
   FDQuery1.Insert;
      FDQuery1.SQL.Text:='insert into MyTableName (id, Text) values (1, "Hello World!")';
   FDQuery1.Post;
end;
Но к сожалению у меня ничего не получается и программа выдаёт вот такая ошибка:
Изображения
Тип файла: png ошибка1.png (7.6 Кб, 94 просмотров)
Моя родина там, где мой компьютер

Последний раз редактировалось SASFM; 27.10.2015 в 20:25.
SASFM вне форума Ответить с цитированием
Старый 27.10.2015, 20:27   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Post замени на Exec;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.10.2015, 20:36   #3
SASFM
Форумчанин
 
Аватар для SASFM
 
Регистрация: 26.03.2015
Сообщений: 191
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Post замени на Exec;
Post заменил на ExecSQL и вылетел вот такую ошибку:
Изображения
Тип файла: png ошибка2.png (8.0 Кб, 131 просмотров)
Моя родина там, где мой компьютер
SASFM вне форума Ответить с цитированием
Старый 27.10.2015, 20:38   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
FDQuery1.Insert;
А это зачем, коль SQL используешь?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.10.2015, 20:40   #5
SASFM
Форумчанин
 
Аватар для SASFM
 
Регистрация: 26.03.2015
Сообщений: 191
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А это зачем, коль SQL используешь?
Использую SQLite, а это для того чтобы добавить новые записи.
Моя родина там, где мой компьютер
SASFM вне форума Ответить с цитированием
Старый 27.10.2015, 20:56   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
это для того чтобы добавить новые записи.
Убери. У тебя уже прописана команда добавления. exec ее и выполнит. Короче:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  
   FDQuery1.SQL.Text:='insert into MyTableName (id, Text) values (1, '+QuotedStr(Hello World!'+')';
   if FDQuery1.exec()=0 then ShowMessage('Ниче не добавлено - ошибка какая-то');
end;
Ферштейн?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.10.2015, 20:58   #7
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Через FiDQuery можно добавить данные ещё так.
Код:
with FDQuery2 do
begin
  SQL.Text := 'INSERT INTO Animals (Title) VALUES (:t)';
  ParamByName('t').Value := 'Cow';
  ExecSQL;
end;
Streletz вне форума Ответить с цитированием
Старый 27.10.2015, 21:10   #8
SASFM
Форумчанин
 
Аватар для SASFM
 
Регистрация: 26.03.2015
Сообщений: 191
Печаль

Цитата:
Сообщение от Streletz Посмотреть сообщение
Через FiDQuery можно добавить данные ещё так.
Код:
with FDQuery2 do
begin
  SQL.Text := 'INSERT INTO Animals (Title) VALUES (:t)';
  ParamByName('t').Value := 'Cow';
  ExecSQL;
end;
Не получилась.
Моя родина там, где мой компьютер
SASFM вне форума Ответить с цитированием
Старый 27.10.2015, 21:15   #9
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от SASFM Посмотреть сообщение

Не получилась.
Скорее всего, просто скопипастили код. Данный метод работает и под Windows и даже под Android.

Последний раз редактировалось Streletz; 27.10.2015 в 21:21. Причина: Опечатка
Streletz вне форума Ответить с цитированием
Старый 27.10.2015, 21:35   #10
SASFM
Форумчанин
 
Аватар для SASFM
 
Регистрация: 26.03.2015
Сообщений: 191
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Скорее всего, просто скопипастили код. Данный метод работает и под Windows и даже под Android.
Честная слова я не смог разобраться с (:t) это типа переменная или как?
Моя родина там, где мой компьютер
SASFM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка синтаксиса в инструкции INSERT INTO / Delphi и базы данных курбанниязов Помощь студентам 2 23.05.2014 15:39
Ошибка синтаксиса в инструкции INSERT INTO Crystal2002 C/C++ Базы данных 5 27.04.2012 21:49
Ошибка синтаксиса в инструкции insert into sectorb БД в Delphi 5 24.11.2011 09:23
Ошибка инструкции Insert tools SQL, базы данных 3 18.11.2009 21:32
Ошибка при Выполнении Insert nimf БД в Delphi 2 27.11.2007 18:16