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

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

25.10.2012, 17:31. Показов 8011. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru