Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
35 / 35 / 4
Регистрация: 23.05.2011
Сообщений: 201
Записей в блоге: 1
1

MySQL сервер в Delphi

11.11.2011, 10:43. Показов 1895. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!, я работаю в d2006 соединяюсь с MySQL server 5.0... через ADO по средствам TADOQuery размещенных в TDataModule, обновления данных переходит под контроль TDBGridEh. При редактировании данных, не понятно при каких обстоятельствах, время от времени выпадают различные ошибки типа "не могу найти строку обновления...". Может я что то не правильно делаю и что то не учитываю?, как то самостоятельно отлавливать изменения в таблице? или может поменять компоненты доступа к данным, пока еще есть такая возможность? дайте какие то советы при работе с серваком (раньше больше работал с локальными базами типа Access и прочей дребедени которая уже не подходить)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.11.2011, 10:43
Ответы с готовыми решениями:

Перезагрузить mysql сервер с обнулением таблицы mysql - опция mysqld --skip-grant-tables
Здравствуйте , столкнулся с такой проблемой ,неудаётся подключиться к серверу mysql из командной...

Сервер MySQl
Привет! Ребята подскажите кто нить делал себе БД на сервере MySql и как вообще с этим разбираться -...

Mysql сервер
Здравствуйте, подскажите пожалуйста где можно разрешить подключатся к MySQL серверу с другой машины...

Не запускается сервер mysql
Доброго времени суток! Работаю (пытаюсь) с консольной версией mysql. Только что установил, при...

11
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
11.11.2011, 11:35 2
Ваша проблема в том, что Вы абсолютно не понимаете СУТИ того, что делаете, о чем красноречиво говорит вот эта фраза:
Delphi
1
обновления данных переходит под контроль TDBGridEh
Грид сам по себе никакие обновления не отслеживает, и тем более не контролирует.

Написание КОРРЕКТНО работающего GUI с правкой непосредственно в гриде требует от программиста понимания поведения датасета и написания соответсвующего кода. Например для обработчиков событий BeforeEdit, BeforeInsert, BeforeDelete, BeforePost, AfterPost, AfterScroll, OnUpdateRecord и других.
В противном случае получается чудо-юдо, при работе с которым (особенно в комплекте с бесподобным нафигатором ) в базе появляются записи-пустышки (полупустышки), пропадают нужные записи, в поля вместо нужных данных записывается какая-то абракадабра и т.д. Ну и конечно постоянные вылеты приложения
К сожалению, в популярной прог.литературе сплошь и рядом авторы предпочитают приводить примеры работы с базами данных именно при помощи "сеточного" редактирования (в принципе понятно их стремление - большинство "заказчиков" ПО привыкли к Экселю и требуют от программ "умения" работать в той же манере), уверяя к тому же, что это так просто ! Ложь, конечно, причем чистейшей воды, во всяком случае на "стандартных" компонентах Делфи, однако читатели покупаются ! В том числе и преподы

Добавлено через 9 минут
Совет простой: забудье про локальные методы работы с базой и переходите на клиент-серверные.
В частности ВСЕ изменения через явные запросы (TADOCommand), редактирование (удаление) через модальные формы с клиентским (предметным) контролем корректности вводимых данных. Каждый запрос проверять на успешность с выдачей обнаруженных ошибок(try except)
Перенос на сторону сервера максимум общего контроля данных и целостности данных (счетчики, констрэйнты, триггеры, хранимки, эксепшены етц)

ИМХО, одна из лучших книг для получения начального представления о КОНЦЕПЦИИ КС технологии (коренным образом отличающейся от локальной, например парадоксовской) - "Мир интербэйз" Вострикова и Ковязина. Это ничего, что там интербэйз - общее направление дано четко, а суть механизма транзакции вообще супер (несмотря что транзакции в интербэйзе по управляемости совсем иное, чем например в Ms SQL Server или том же акцесе)
1
35 / 35 / 4
Регистрация: 23.05.2011
Сообщений: 201
Записей в блоге: 1
11.11.2011, 13:31  [ТС] 3
на операцию обновления сделать процедуру (SQ:L, не Delphi процедуру) с параметрами в виде полей и передавать серверу что бы он сам вставлял записи через INSERT и UPDATE (в случае обновления а не добавления), я в правильном направлении???
0
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
11.11.2011, 13:46 4
А по мне раз взялись за мускуль то и пишите максимально функционала на стороне БД. Ибо когда с ним работаешь сам не замечаешь как переходишь к веб интерфейсам. Так почему же сразу не сделать так чтоб было удобно потом.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
11.11.2011, 15:34 5
Delphi
1
я в правильном направлении???
В правильном.
0
35 / 35 / 4
Регистрация: 23.05.2011
Сообщений: 201
Записей в блоге: 1
11.11.2011, 17:01  [ТС] 6
Тогда такой вопрос, я редактирую данные в таблице, потом отлавлюю событие (какое событие брать AfterEdit или BeforPost) на событие вешаю вызов StoredProc отправляю параметры и делаю ExecProc, все верно ?
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
11.11.2011, 17:41 7
Нет, не верно !
Я Вам еще раз повторяю - откажитесь от гридного редактирования в пользу модальных форм.
0
35 / 35 / 4
Регистрация: 23.05.2011
Сообщений: 201
Записей в блоге: 1
14.11.2011, 10:06  [ТС] 8
Нет такой возможности, модальные формы сильно снижают функциональность, и толку от программы работающей с базой с которой нельзя работать сразу с набором данных а не вызывать форму для редактирования каждой конкретной записи, юзер заморится от такой фигни и выкинет на мусор такую прогу.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
14.11.2011, 11:59 9
Delphi
1
Нет такой возможности
Настоятель монастыря не позволят ?

Delphi
1
модальные формы сильно снижают функциональность
Это Вы никому не говорите - засмеют

Delphi
1
толку от программы работающей с базой с которой нельзя работать сразу с набором данных а не вызывать форму для редактирования каждой конкретной записи, юзер заморится от такой фигни и выкинет на мусор такую прогу.
Если "база" принадлежит только юзеру, то эксель в руки и пусть он хоть селедку на нем заворачивает. Если же база общая, то юзер должен пользоватьеся ею не монопольно (делаю что хочу, хоть вдоль правлю, хоть поперек, а хоть по диагонали !), а наравне с другими, т.е. по ПРАВИЛАМ. А правила любого РАЗДЕЛЯЕМОГО доступа состоят в том, что кроме прав, имеются также и ограничения - и одно из основных ограничений и состоит в том, что пользователь должен сначала ПОЛУЧИТЬ право на реактирование ОДНОЙ записи, а потом только изменять ее !
Короче, Вам надо просто почитать что-нибудь про клиент-серверные технологии. А то Вам кто-то вбил в голову что единственная и неповторимая технология - локальная и парадокс - пророк ее

Добавлено через 7 минут
И еще. На клиенте Вы можете вытврять с ПОЛУЧЕННЫМИ с сервера данными что Вам заманэться, например засовывать их в стрингрид или в TClientDataSet, где править "шахматкой", "елочкой" или квадратно-гнездовым. Но вот к серверу будьте добры обращаться запросами и при этом не забывая проверить корректность передаваемых данных - либо ловите и диагностируйте полученные от него "эксепщины") !
Кстати, в так любимом Вами и Вашим учителями TTable при каждом Post формируются именно такие запросы, но при этом неявно, поэтому иногда в базу записывается не совсем то (или совсем не то), что хотелось бы И именно поэтому, а еще и потому что не соблюдается ЛОГИЧЕСКАЯ ЦЕЛОСТНОСТЬ правок (т.е. когда объект ГАРАНТИРОВАННО корректно добавляется или изменяется в базе, что ДОСТАТОЧНО ПРОСТО обеспечивается МОДАЛЬНОСТЬЮ интерфейса)
0
35 / 35 / 4
Регистрация: 23.05.2011
Сообщений: 201
Записей в блоге: 1
14.11.2011, 13:38  [ТС] 10
Цитата Сообщение от MsGuns Посмотреть сообщение
Это Вы никому не говорите - засмеют
Код Delphi
1
толку от программы работающей с базой с которой нельзя работать сразу с набором данных а не вызывать форму для редактирования каждой конкретной записи, юзер заморится от такой фигни и выкинет на мусор такую прогу.
это даже не мои слова а пользователей и заказчика
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
14.11.2011, 16:37 11
Ну вот и сделайте ему на чистом акцесе - ему с головой хватит
Только предупредите, что работать с информацией можно будет только на его компе.

Добавлено через 5 минут
Delphi
1
Тогда такой вопрос, я редактирую данные в таблице, потом отлавлюю событие (какое событие брать AfterEdit или BeforPost) на событие вешаю вызов StoredProc отправляю параметры и делаю ExecProc, все верно ?
А в справку по событиям датасета заглянуть дельфишную тоже заказчик не дает ?
0
35 / 35 / 4
Регистрация: 23.05.2011
Сообщений: 201
Записей в блоге: 1
14.11.2011, 17:31  [ТС] 12
я не пойму к чему такие ответы типа "погугли", "посмотри инфу". Я зашел на форум что бы задать вопрос и получить ответ от кого-то кто может ответить, помоему форумы для это и предназначены, и я писал: "аксесс и прочая дребедень не подходит" короче, закрыли тему, я уже разобрался.
0
14.11.2011, 17:31
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2011, 17:31
Помогаю со студенческими работами здесь

Денвер и сервер mysql
не знаю здесь ли я пишу, если что, не ругайте. помогите пожалуйста, не могу подконнектиться к...

Сервер для MySQL
Добрый день. По работе попросили сделать сервер в пределах компании, чтобы любой пользователь мог...

Клиент -> Сервер -> MySQL
Всем добрый вечер. В данный момент занимаюсь довольно крупным проектом, по крайней мере перед собой...

Клиент + Сервер + MySQL
Доброго времени суток. Собственно вопрос большой, требуется написать клиент-серверное приложение,...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
Как без исключения проверить существование файла в Python
InfoMaster 19.01.2025
При разработке программного обеспечения на Python часто возникает необходимость проверить существование файла перед выполнением операций с ним. Это критически важная задача, которая помогает избежать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru