Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/41: Рейтинг темы: голосов - 41, средняя оценка - 4.56
5 / 5 / 5
Регистрация: 09.02.2011
Сообщений: 112

Как правильно выполнить запрос на добавление записей

25.10.2012, 17:31. Показов 8049. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, как правильно выполнить запрос на добавление?

содержимое mmo1
Delphi
1
2
3
4
5
6
7
INSERT INTO `client` ( `id_client` , 
`name_client` , `address_client` , 
`passport` )
VALUES (
'', '+#39+edt1.Text+#39+', '+#39+edt2.Text+#39+', 
'+#39+edt3.Text+#39+'
)
Delphi
1
2
3
4
5
6
7
8
  query:=mmo1.Text;
  mysql_query(myServer, PChar(query)); 
  FRes:=mysql_store_result(myServer);
  if FRes = nil then
    ShowMessage('Данные успешно внесены!')
  else
    ShowMessage('Возникла ошибка при внесении данных!');
  mysql_free_result(FRes);
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.10.2012, 17:31
Ответы с готовыми решениями:

как правильно выполнить запрос?
$result = mysql_query("SELECT * FROM messages WHERE `num`=".$stat." ORDER BY id DESC LIMIT ".$start.", ".$num."", $db); или $result =...

Как выполнить AR Запрос в Yii на выборку записей по значению связанных данных?
Добрый день, Есть 2 таблицы: m_bids ------------ id mc_points ------------

Как правильно выполнить запрос Insert.Into.Select.From.Where
Доброго утра всем, пытаюсь записать данные с лэйбла в последнюю строку БД, но выдает ошибку в данном методе. Dim Com = New...

20
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
25.10.2012, 19:54
Расставь как положено кавычки и плюсы и будет тебе счастье
0
5 / 5 / 5
Регистрация: 09.02.2011
Сообщений: 112
25.10.2012, 20:19  [ТС]
У меня не получается
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
25.10.2012, 23:23
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm10.Button1Click(Sender: TObject);
begin
     ADOQuery1.SQL.Clear;
     begin
     ADOQuery1.SQL.Text := 'INSERT INTO Tab1 (Фамилия) VALUES (' + QuotedStr(Edit1.Text) + ')';
     ADOQuery1.SQL.Text := 'INSERT INTO Tab1 (Имя) VALUES (' + QuotedStr(Edit2.Text) + ')';
     ADOQuery1.SQL.Text := 'INSERT INTO Tab1 (Отчество) VALUES (' + QuotedStr(Edit3.Text) + ')';
     ADOQuery1.SQL.Text := 'INSERT INTO Tab1 (Телефон) VALUES (' + QuotedStr(Edit4.Text) + ')';
     ADOQuery1.SQL.Text := 'INSERT INTO Tab1 (ICQ) VALUES (' + QuotedStr(Edit5.Text) + ')';
     end;
     ADOQuery1.ExecSQL;
end;
1
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
25.10.2012, 23:37
Code
1
2
  ADOQuery1.SQL.Text:='INSERT INTO client (id_client,name_client,address_client,passport) '+
    'VALUES ('+QuotedStr('')+','+QuotedStr('edt1.Text')+','+QuotedStr('edt2.Text')+','+QuotedStr('edt3.Text')+')' ;
0
5 / 5 / 5
Регистрация: 09.02.2011
Сообщений: 112
26.10.2012, 05:43  [ТС]
Извините, но мне надо без компонентов ADO

Delphi
1
INSERT INTO client ( id_client, name_client, address_client, passport ) VALUES ('', '+#39+edt1.Text+#39+', '+#39+edt2.Text+#39+', '+#39+edt3.Text+#39+')
просто нужно, что бы вставилось содержимое из компонентов edt, а вставляется только надписи самих компонентов
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
26.10.2012, 08:36
А какая разница куда текст запроса присваивать - в mmo1.Text или в ADOQuery1.SQL.Text?
0
5 / 5 / 5
Регистрация: 09.02.2011
Сообщений: 112
26.10.2012, 09:48  [ТС]
Цитата Сообщение от Аватар Посмотреть сообщение
А какая разница куда текст запроса присваивать - в mmo1.Text или в ADOQuery1.SQL.Text?
выше написано, что нужно без всяких компонентов!!!

разрешено использовать компоненты только из вкладки стандартные и StringGrib

Добавлено через 6 минут
Delphi
1
2
3
query:='INSERT INTO client (id_client, name_client, address_client, passport) VALUES ('', '+#39+edt1.Text+#39+', '+#39+edt2.Text+#39+', '+#39+edt3.Text+#39+')';
mysql_query(myServer, PChar(query)); // Отправка запроса на сервер
FRes:=mysql_store_result(myServer); // Получение ответа от сервера
вот проблема с #39 (апострофами)

Добавлено через 40 минут
Цитата Сообщение от Аватар Посмотреть сообщение
Code
1
2
  ADOQuery1.SQL.Text:='INSERT INTO client (id_client,name_client,address_client,passport) '+
    'VALUES ('+QuotedStr('')+','+QuotedStr('edt1.Text')+','+QuotedStr('edt2.Text')+','+QuotedStr('edt3.Text')+')' ;
если убрать апострофы в QuotedStr('edt1.Text') то работает
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
26.10.2012, 09:50
выше написано, что нужно без всяких компонентов!!!
Где выше и без каких компонент? QuotedStr просто функция, которая обвертывает текст в кавычки. Ниже разные варианты одного и того же и без дурацкого #39 и без всяких компонент
Delphi
1
2
3
query:='INSERT INTO client (id_client,name_client,address_client,passport) VALUES ('''','''+edt1.Text+''','''+edt2.Text+''','''+edt3.Text+''')';
query:='INSERT INTO client (id_client,name_client,address_client,passport) VALUES ('+QuotedStr('')+','+QuotedStr(edt1.Text)+','+QuotedStr(edt2.Text)+','+QuotedStr(edt3.Text)+')';
query:=Format('INSERT INTO client (id_client,name_client,address_client,passport) VALUES ('''',''%s'',''%s'',''%s'')',[edt1.Text,edt2.Text,edt3.Text]);
если убрать апострофы в QuotedStr('edt1.Text') то работает
То просто описка с последующим копипасте
1
8 / 8 / 1
Регистрация: 11.11.2013
Сообщений: 43
11.11.2013, 03:46
Всем доброго времени суток!
Громко не смеяться, я только учусь!
Вопрос вот в чем: формирую SQL-запрос в Delphi следующим образом:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure TfrmMain.BitBtnSaveClick(Sender: TObject);
begin
 strSQL := '';
 strSQL := 'INSERT INTO Contacts (LastName, FirstName, Patronimic, Organization, Position, ' +
           'Address, PhoneWork, PhoneMob, EmailWork, EmailPrivate, wwwSite, CompanyDirection, ContactNote) ' +
           'values (' + #39 + self.EditLastName.Text + #39 + ', ' + #39 + self.EditName.Text + #39 +
           ', ' + #39 + self.EditPatronimic.Text + #39 + ', ' + #39 + self.EditOrganization.Text + #39 +
           ', ' + #39 + self.EditPosition.Text + #39 + ', ' + #39 + self.EditAddress.Text + #39 +
           ', ' + #39 + self.EditPhoneWork.Text + #39 + ', ' + #39 + self.EditPhoneMob.Text + #39 +
           ', ' + #39 + self.EditEmailWork.Text + #39 + ', ' + #39 + self.EditEmailPrivate.Text + #39 +
           ', ' + #39 + self.EditWWWSite.Text + #39 + ', ' + #39 + self.EditCompanyDirection.Text + #39 +
           ', ' + #39 + self.MemoNote.Text + #39 + ')';
 
// self.MemoNote.Text := strSQL;
// ShowMessage(strSQL);
 self.QueryWorking.Active := false;
 self.QueryWorking.Close;
 self.QueryWorking.SQL.Clear;
 self.QueryWorking.SQL.Text := strSQL;
 self.QueryWorking.ExecSQL;
 self.QueryWorking.Active := true;
 self.ADOConnection.CommitTrans;
end;
В результате выполнения этой процедуры вылезает ошибка "Ошибка синтаксиса в инструкции INSERT INTO".
Никак не могу ее заметить. Подскажите, пожалуйста ГДЕ ОНА????
PS strSQL - глобальная стринговая переменная
Полученный запрос :
SQL
1
INSERT INTO Contacts (LastName, FirstName, Patronimic, Organization, POSITION, Address, PhoneWork, PhoneMob, EmailWork, EmailPrivate, wwwSite, CompanyDirection, ContactNote) VALUES ('Фамилия', 'Имя', 'Отчество', 'Наименование организации', 'Должность', 'Адрес организации', '8 (495) 123-45-67', '8 (925) 999-45-88', 'email@work.ru', 'email@home.ru', 'www.site.org', 'Направление деятельности', 'Примечание. Долшое, большое и НУЖНОЕ!!!!')
Добавлено через 16 минут
Немного продвинулся в решении вопроса: Наименование поля POSITION - зарезервированное слово. Изменил на WorkPosition, но успеха не добился.
Вылезает следующая ошибка: "Текущий проводник не поддерживает возврат нескольких наборов записей в результате одной операции" или "QueryWorking: CommandText does not return a result set". Ошибка возникает при выполнении этой строки кода
Delphi
1
self.QueryWorking.Active := true;
PS Компоненты ADO
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
11.11.2013, 09:57
глянь сюда
Работа с методами Open и ExecSQL
1
8 / 8 / 1
Регистрация: 11.11.2013
Сообщений: 43
11.11.2013, 10:10
- только так могу прокомментировать свой поступок!
0
 Аватар для Waddonator
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
11.11.2013, 13:15
Возврат нескольких наборов записей в результате одной операции осуществляется только инструкцией SELECT, а у Вас INSERT INTO.

Добавлено через 48 секунд

Не по теме:

Упс... вторую страницу ответов не заметил.

0
8 / 8 / 1
Регистрация: 11.11.2013
Сообщений: 43
11.11.2013, 20:30
Блин, все же я не понимаю: работать - работает (т.е. записи в таблицу добавляются и сохраняются /но тоже не всегда /), но ошибка не пропала. Гляньте, пожалуйста еще разок. Вот код в дельфях:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TfrmMain.BitBtnSaveClick(Sender: TObject);
begin
 strSQL := '';
 strSQL := 'INSERT INTO Contacts (LastName, FirstName, Patronimic, ' +
           ' OrganizationName, WorkPosition, Address, PhoneWork, PhoneMob, ' +
           ' EmailWork, EmailPrivate, wwwSite, CompanyDirection, ContactNote) ' +
           ' values (' + #39 + self.EditLastName.Text + #39 + ', ' + #39 +
           self.EditName.Text + #39 + ', ' + #39 + self.EditPatronimic.Text + #39 +
           ', ' + #39 + self.EditOrganization.Text + #39 + ', ' + #39 +
           self.EditPosition.Text + #39 + ', ' + #39 + self.EditAddress.Text + #39 +
           ', ' + #39 + self.EditPhoneWork.Text + #39 + ', ' + #39 +
           self.EditPhoneMob.Text + #39 + ', ' + #39 + self.EditEmailWork.Text + #39 +
           ', ' + #39 + self.EditEmailPrivate.Text + #39 + ', ' + #39 +
           self.EditWWWSite.Text + #39 + ', ' + #39 + self.EditCompanyDirection.Text +
           #39 + ', ' + #39 + self.MemoNote.Text + #39 + ')';
 
 self.MemoNote.Text := strSQL;
// ShowMessage(strSQL);
 self.QueryWorking.Close;
 self.QueryWorking.SQL.Clear;
 self.QueryWorking.SQL.Add(strSQL);
// self.QueryWorking.SQL.Text := strSQL;
// self.QueryWorking.ExecSQL;
// self.QueryWorking.Active := true;
 self.QueryWorking.Open;
 self.ADOConnection.CommitTrans;
end;
а это SQL'ник, полученный в результате выполнения:
Oracle 11 SQL
1
INSERT INTO Contacts (LastName, FirstName, Patronimic,  OrganizationName, WorkPosition, Address, PhoneWork, PhoneMob,  EmailWork, EmailPrivate, wwwSite, CompanyDirection, ContactNote)  VALUES ('asdasdasd', 'asdasdasd', 'asdasdasd', 'asdasdasdasd', 'asdasdasdasd', 'asdasdasdasd', 'asdasdasd', 'asdasdasd', 'asdasdasdasd', 'asdasdasd', 'asdasdasd', 'asdasdasd', 'asdasdasfsahgsrjurtfyht')
0
8 / 8 / 1
Регистрация: 11.11.2013
Сообщений: 43
11.11.2013, 20:36
Вот скрин ошибки
Миниатюры
Как правильно выполнить запрос на добавление записей  
0
 Аватар для Waddonator
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
12.11.2013, 00:45
Freestyler2013, у Вас инструкция INSERT INTO. Запрос с этой инструкцией не возвращает никакие записи с сервера. Вы можете использовать для этого только QueryWorking.ExecSQL;.

QueryWorking.Active := true; и QueryWorking.Open; - одно и то же. Используется для запросов с инструкцией SELECT, который возвращает набор записей с сервера.
0
8 / 8 / 1
Регистрация: 11.11.2013
Сообщений: 43
12.11.2013, 09:46
Waddonator, так я и не требую от него никакого возврата! Я хочу чтобы он просто проинсертил запись в таблицу и все. Но эта зараза ругается.
0
 Аватар для Waddonator
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
12.11.2013, 12:46
Freestyler2013, думаю, разговор продолжать бессмысленно, т.к. Вам 3 раза предоставили ответ на Ваш вопрос об ошибке, и как этой ошибки избежать.
0
8 / 8 / 1
Регистрация: 11.11.2013
Сообщений: 43
12.11.2013, 12:51
Waddonator, погодите, погодите... Дело в том, что если Вы внимательно посмотрите на историю моих обращений (да и на последний листинг кода из делфей), то сможете увидеть там строчку под номером 23, а именно:
Delphi
1
// self.QueryWorking.ExecSQL;
. Изначально использовал именно эту конструкцию и ошибка была.
0
 Аватар для Waddonator
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
12.11.2013, 12:57
Цитата Сообщение от Freestyler2013 Посмотреть сообщение
Изначально использовал именно эту конструкцию и ошибка была.
Нет. Изначально Вы использовали эту строчку (что правильно), а следом использовали "QueryWorking.Active := true;". Вот эта последняя строчка и является ошибочной.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.11.2013, 12:57
Помогаю со студенческими работами здесь

Как из VB вызвать запрос на добавление записей в Access97
если ставлю Set cmd = New ADODB.Command Set par = New ADODB.Parameter par.Name = 'DT' ...

Spring: JSP + AJAX запрос, как правильно выполнить
Доброго времени суток. Подскажите пожалуйста, такой вопрос. Есть .jsp файл, на который мне надо подцепить результаты метода random...

Как правильно сделать запрос на выборку записей
Здравствуйте уважаемые. Продолжаю разбираться в БД Access и никак не могу найти ответ на такой вопрос: Как правильно сделать запрос на...

[Silverlight] Как правильно выполнить асинхронный запрос к сервису и отобразить на страничке?
Добрый день, для связи страницы Silverlight с БД использую WFC Services (Silverligt). Данный сервис использует только асинхронные вызовы. В...

Как правильно сделать запрос к MySQL для подсчета записей
Всем привет. Сделал себе вот такой вывод всех категорий на главной странице сайта (CMS DLE): ссылка удалена Выводится: название и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru