С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/40: Рейтинг темы: голосов - 40, средняя оценка - 4.55
10 / 10 / 4
Регистрация: 14.01.2010
Сообщений: 80

Запись данных в MySQL, компоненты Zeos

02.03.2011, 23:05. Показов 10221. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Помогите реализовать запись данных в БД.
Использую Zeos, в SQL большого опыта нет, пока хватало только запросов, с ними все проблемы решались гуглом. А вот с записью не могу разобраться.
Код:
Delphi
1
2
3
4
    s := 'CREATE TABLE test12 (col1 INT(2), col2 INT(2))';
    form1.zQuery1.SQL.Clear ;
    form1.zQuery1.SQL.Add(s);
    form1.ZQuery1.Open;
выдает ошибку: "Can not open a Resultset."
Хотя через MySQL Administrator и через запрос
Delphi
1
 s:= 'select * from `test12`';
показывает, что строка добавлена, повторное выполнение кода вызывает ту-же ошибку и вторая строка тоже добавляется. Но, стоит закрыть приложение и записи пропадают из БД.
Те же результаты при выполнении через компонент ZReadOnlyQuery1, чем он отличается от zQuery1?
Из названия, конечно понятно, но есть же еще отличия и особенности? Я раньше использовал ZReadOnlyQuery1 но только для запросов.
В общем помогите разобраться. Или дайте пример кода, как Вы записываете данные в БД через Zeos?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.03.2011, 23:05
Ответы с готовыми решениями:

Zeos вывод данных из MySql
Доброго времени суток, суть проблемы заключается в том что я не до конца могу понять как вывести в dbGrid данные из БД MySql вроде через...

Не устанавливаются компоненты Zeos
Привет. В общем вопрос такого плана скачал ZEOSDBO-7.1.4-stable, открыл инструкцию в doc/pdf/installation.pdf создал в корне delphi...

Не устанавливаются компоненты Zeos
Доброго времени суток! Говорю сразу - я новичок и много чего не сразу понимаю, поэтому не ругайтесь. Проблема следующая - пытаюсь...

5
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
03.03.2011, 10:57
Вы приводите странноватое сравнение!
В первом случае Вы средствами SQL создаете новый объект в БД (новую таблицу с именем test12). Не очено понятно, зачем таблицу создавать при исполнении приложения, но в любом случае это не "селективный" SQL и инициировать его отработку с попощью OPEN ника не получится.
Во втором случае у Вас нормальный селективный запрос.
Ну, и вот, что с чем Вы сравниваете? В данном случае вес слона с высотой курицы.
0
10 / 10 / 4
Регистрация: 14.01.2010
Сообщений: 80
03.03.2011, 11:11  [ТС]
Цитата Сообщение от SAMZ Посмотреть сообщение
Вы приводите странноватое сравнение!
В первом случае Вы средствами SQL создаете новый объект в БД (новую таблицу с именем test12). Не очено понятно, зачем таблицу создавать при исполнении приложения, но в любом случае это не "селективный" SQL и инициировать его отработку с попощью OPEN ника не получится.
Во втором случае у Вас нормальный селективный запрос.
Ну, и вот, что с чем Вы сравниваете? В данном случае вес слона с высотой курицы.

Я совсем не пытаюсь сравнивать эти 2 запроса.
Я говорю, что после выполнения первого кода в базе появляются новые строки, их видно в MySQL Administrator-е и при выполнении второго запроса выводится результат, в котором видно, что появились новые строки.
Цитата Сообщение от SAMZ Посмотреть сообщение
В первом случае Вы средствами SQL создаете новый объект в БД (новую таблицу с именем test12)
Простите, привел не тот кусок кода. Я в поисках ошибок пробовал все возможные варианты, для теста решил попробовать создать таблицу, таблица создалась с подобной ошибкой, но не исчезла при закрытии формы.
Вод код, который не работает
Delphi
1
2
3
4
    s:= 'INSERT into `123` VALUES (`password`)';
    form1.zQuery1.SQL.Clear ;
    form1.zQuery1.SQL.Add( s );
    form1.ZQuery1.Open;
Пробовал еще так:
Delphi
1
  s:= 'INSERT INTO `123` (`NAME`,`HASH`) VALUES ("123","fsdferfe4354")';
Поля в таблице существуют, перепробовал разные варианты.
Самое интересное, что записи появляются, но ненадолго =)

В общем нужно реализовать запись в БД, подскажите правильный путь.
1
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
03.03.2011, 12:17
В общем случае в базах данных существует понятие транзакции. Есть команда COMMIT - зафиксировать транзакцию и ROLLBACK - откатить транзакцию. Поэтому если ты после внесения изменений хочешь сохранить данные на будущее, не надо забывать про COMMIT. Некоторые клиентские программы могут делать COMMIT автоматом, но, на мой взгляд, это плохая практика
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
03.03.2011, 12:54
А `123` это что за объект такой?
0
10 / 10 / 4
Регистрация: 14.01.2010
Сообщений: 80
03.03.2011, 23:06  [ТС]
Цитата Сообщение от SAMZ Посмотреть сообщение
А `123` это что за объект такой?
Это таблица, созданная в БД для теста записи.

Добавлено через 9 минут
Цитата Сообщение от Grossmeister Посмотреть сообщение
В общем случае в базах данных существует понятие транзакции. Есть команда COMMIT - зафиксировать транзакцию и ROLLBACK - откатить транзакцию. Поэтому если ты после внесения изменений хочешь сохранить данные на будущее, не надо забывать про COMMIT. Некоторые клиентские программы могут делать COMMIT автоматом, но, на мой взгляд, это плохая практика
Спасибо за подсказку- не знал, поковырял в эту сторону, но думаю дело не в этом. Ошибка возникает после выполнения строчки:
Delphi
1
form1.ZQuery1.Active := true;
Если попытаться сохранить данные после- ничего не выходит, т.к. выполнение прерывается ошибкой, если до этой строчки- то по сути изменений в БД еще ней да и подключения к ней тоже.
Но еще буду ковырять в этом направлении.

Возможно я что-то не так настроил в компоненте?
я до этого пользовался ZReadOnlyQuery для формирования запросов к БД, можно ли с помощью него же отправить запрос на добавление записи в БД или компонент ReadOnly?

Добавлено через 52 минуты
Нашел решение:
Delphi
1
2
3
4
5
6
  Zconnection1.AutoCommit:=false;
  ZQuery1.sql.clear;
  ZQuery1.sql.add('INSERT INTO `123` (`password`) VALUES ("fsdferfe4354")');
  ZQuery1.execsql;
  Zconnection1.Commit;
  Zconnection1.AutoCommit:=true;
Нашел пример на одном форуме, правда вместо insert был запрос update, но инсерт тоже заработал.
Теперь буду разбираться. Вроде добавилось только:

Delphi
1
2
  ZQuery1.execsql;
  Zconnection1.Commit;
и еще
Delphi
1
  Zconnection1.AutoCommit:=false;
но врятли дело в этом.

Закоментировав
Delphi
1
2
  ZQuery1.execsql;
  Zconnection1.Commit;
ошибка возникает другая или не возникает вовсе.
Еще активация запроса
Zconnection1.AutoCommit:=true;
вместо
ZQuery1.Active := true;
как делал я, наверное дело в этом. В общем всем спасибо за помощь, того, что было нужно добился.
Буду работать дальше и разбираться в коде. =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.03.2011, 23:06
Помогаю со студенческими работами здесь

MySQL + ZEOS + DELPHI7
Доброго времени суток. Решил попробовать связку MySQL + ZEOS + DELPHI7. Всё хорошо установилось, но контролы в Delphi7 не понимают...

MySQL + Zeos + кодировка
Уже второй день маюсь, чё сделать не знаю, всё выводит эти знаки вопроса долбанутые... Версии D7, winxp Sp2, Apache/2.2.21 (FreeBSD)...

Mysql+Delphi+Zeos, удаленный доступ
Mysql 5.5, Delphi 2010, Zeos 7 (alfa). Всё установил (ip по умолчанию - 127.0.0.1, порт 3306), на локальной машине всё работает. Захотел...

не получаеться Авторизация MySql Компонент Zeos
Добрый день. у меня есть программа в которой нужно реализовать авторизацию с проверкой логина и пароля на наличие их в безе то-есть вбил...

Разработка внешней компоненты для взаимодействия с базой данных MySQL
Добрый день. Задача: Разработка внешней компоненты для взаимодействия с базой данных MySQL. Использоваться внешняя компонента должна в...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru