1 | |
MySQL сервер в Delphi11.11.2011, 10:43. Показов 1895. Ответов 11
Метки нет (Все метки)
Здравствуйте!, я работаю в d2006 соединяюсь с MySQL server 5.0... через ADO по средствам TADOQuery размещенных в TDataModule, обновления данных переходит под контроль TDBGridEh. При редактировании данных, не понятно при каких обстоятельствах, время от времени выпадают различные ошибки типа "не могу найти строку обновления...". Может я что то не правильно делаю и что то не учитываю?, как то самостоятельно отлавливать изменения в таблице? или может поменять компоненты доступа к данным, пока еще есть такая возможность? дайте какие то советы при работе с серваком (раньше больше работал с локальными базами типа Access и прочей дребедени которая уже не подходить)
0
|
11.11.2011, 10:43 | |
Ответы с готовыми решениями:
11
Перезагрузить mysql сервер с обнулением таблицы mysql - опция mysqld --skip-grant-tables Сервер MySQl Mysql сервер Не запускается сервер mysql |
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||||||
11.11.2011, 11:35 | 2 | |||||
Ваша проблема в том, что Вы абсолютно не понимаете СУТИ того, что делаете, о чем красноречиво говорит вот эта фраза:
Написание КОРРЕКТНО работающего GUI с правкой непосредственно в гриде требует от программиста понимания поведения датасета и написания соответсвующего кода. Например для обработчиков событий BeforeEdit, BeforeInsert, BeforeDelete, BeforePost, AfterPost, AfterScroll, OnUpdateRecord и других. В противном случае получается чудо-юдо, при работе с которым (особенно в комплекте с бесподобным нафигатором ) в базе появляются записи-пустышки (полупустышки), пропадают нужные записи, в поля вместо нужных данных записывается какая-то абракадабра и т.д. Ну и конечно постоянные вылеты приложения К сожалению, в популярной прог.литературе сплошь и рядом авторы предпочитают приводить примеры работы с базами данных именно при помощи "сеточного" редактирования (в принципе понятно их стремление - большинство "заказчиков" ПО привыкли к Экселю и требуют от программ "умения" работать в той же манере), уверяя к тому же, что это так просто ! Ложь, конечно, причем чистейшей воды, во всяком случае на "стандартных" компонентах Делфи, однако читатели покупаются ! В том числе и преподы Добавлено через 9 минут Совет простой: забудье про локальные методы работы с базой и переходите на клиент-серверные. В частности ВСЕ изменения через явные запросы (TADOCommand), редактирование (удаление) через модальные формы с клиентским (предметным) контролем корректности вводимых данных. Каждый запрос проверять на успешность с выдачей обнаруженных ошибок(try except) Перенос на сторону сервера максимум общего контроля данных и целостности данных (счетчики, констрэйнты, триггеры, хранимки, эксепшены етц) ИМХО, одна из лучших книг для получения начального представления о КОНЦЕПЦИИ КС технологии (коренным образом отличающейся от локальной, например парадоксовской) - "Мир интербэйз" Вострикова и Ковязина. Это ничего, что там интербэйз - общее направление дано четко, а суть механизма транзакции вообще супер (несмотря что транзакции в интербэйзе по управляемости совсем иное, чем например в Ms SQL Server или том же акцесе)
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 | |||||
0
|
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
|
14.11.2011, 10:06 [ТС] | 8 |
Нет такой возможности, модальные формы сильно снижают функциональность, и толку от программы работающей с базой с которой нельзя работать сразу с набором данных а не вызывать форму для редактирования каждой конкретной записи, юзер заморится от такой фигни и выкинет на мусор такую прогу.
0
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||||||||||||||||
14.11.2011, 11:59 | 9 | |||||||||||||||
Короче, Вам надо просто почитать что-нибудь про клиент-серверные технологии. А то Вам кто-то вбил в голову что единственная и неповторимая технология - локальная и парадокс - пророк ее Добавлено через 7 минут И еще. На клиенте Вы можете вытврять с ПОЛУЧЕННЫМИ с сервера данными что Вам заманэться, например засовывать их в стрингрид или в TClientDataSet, где править "шахматкой", "елочкой" или квадратно-гнездовым. Но вот к серверу будьте добры обращаться запросами и при этом не забывая проверить корректность передаваемых данных - либо ловите и диагностируйте полученные от него "эксепщины") ! Кстати, в так любимом Вами и Вашим учителями TTable при каждом Post формируются именно такие запросы, но при этом неявно, поэтому иногда в базу записывается не совсем то (или совсем не то), что хотелось бы И именно поэтому, а еще и потому что не соблюдается ЛОГИЧЕСКАЯ ЦЕЛОСТНОСТЬ правок (т.е. когда объект ГАРАНТИРОВАННО корректно добавляется или изменяется в базе, что ДОСТАТОЧНО ПРОСТО обеспечивается МОДАЛЬНОСТЬЮ интерфейса)
0
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||||||
14.11.2011, 16:37 | 11 | |||||
Ну вот и сделайте ему на чистом акцесе - ему с головой хватит
Только предупредите, что работать с информацией можно будет только на его компе. Добавлено через 5 минут
0
|
14.11.2011, 17:31 [ТС] | 12 |
я не пойму к чему такие ответы типа "погугли", "посмотри инфу". Я зашел на форум что бы задать вопрос и получить ответ от кого-то кто может ответить, помоему форумы для это и предназначены, и я писал: "аксесс и прочая дребедень не подходит" короче, закрыли тему, я уже разобрался.
0
|
14.11.2011, 17:31 | |
14.11.2011, 17:31 | |
Помогаю со студенческими работами здесь
12
Денвер и сервер mysql Сервер для MySQL Клиент -> Сервер -> MySQL Клиент + Сервер + MySQL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как подключить 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 часто возникает необходимость проверить существование файла перед выполнением операций с ним. Это критически важная задача, которая помогает избежать. . .
|