| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Взаимодействие Delphi и MySQL Server |
| Автор: Boiskaut 14.3.2006, 14:01 |
| Подскажите, пожалуйста, как можно организовать взаимодействие между Delphi и базой данных на MySQL Server??? |
| Автор: Vas 14.3.2006, 14:52 |
| dbExpress или сторонние компоненты типа Zeos. |
| Автор: Boiskaut 14.3.2006, 15:02 |
| А можно поточнее??? база данных MySQL Server Добавлено @ 15:15 Проблема в том, что я вообще не могу разобраться как подключаться!!!! =(((( |
| Автор: Boiskaut 15.3.2006, 08:29 |
| библиотеку LIBMYSQL.dll искал, но не нашел, где она вообще находится??? |
| Автор: Vas 15.3.2006, 08:48 |
| Обычно в поставке сервера она идет в папке Mysql\bin. Могу кинуть по мылу если хочешь. |
| Автор: Boiskaut 15.3.2006, 11:57 |
| Скинь тогда по мылу: verchenk@rambler.ru а то че-то не могу найти... Добавлено @ 11:59 и дай мне, пожалуйста, на всякий случай свою асю, чтоб по-быстрее общаться!!! |
| Автор: Vit 15.3.2006, 16:36 |
| Используйте ADO компоненты. |
| Автор: Boiskaut 16.3.2006, 11:15 |
| Компонент ADOConnecting ???? Суть в том, что у меня MySQL Server установлен не в отдельности, а в комплекте с PHP и т.д. Т.Е. установлен сервер Apache, при запуске которого запускается и MySQL Server и PHP Server и т.д. И еще: примерчик бы - как именно осуществить это соединение поподробнее, напримере!!! но теперь не понятно с помощью каких компонентов работать с самой базой |
| Автор: Vit 16.3.2006, 16:20 |
| Упс! Сорри, по ошибке прочитал MS SQL... Хотя для MySQL есть ADO провайдер у них на сайте и через ADO можно достучаться |
| Автор: Boiskaut 16.3.2006, 17:20 |
| Этот вопрос уже решен... Большое спасибо, помог Vas!!!!! |
| Автор: cyberriver 18.4.2006, 23:01 |
| Вот у меня следующая проблема у меня не может найти эту длл-ку libmysql.dll пишет Can't load libmysql.dll Я взял уже с mysql server (он у меня 5 стоит), из бина ее понакидал и в прожект и в папку бина дельфи, где dbexpmysql.dll лежит и в систем 32 кинул и в просто windows кинул... все равно пишет. не знаю уже чего делать |
| Автор: Boiskaut 19.4.2006, 06:13 |
| А в свойствах Connection прописывал новые драва? И вообще если MySQL Server, то я использовал компоненты Zeos, и с ними все заработало, но правда были небольшие проблемы с установкой самих компонентов =)))) |
| Автор: cyberriver 23.4.2006, 15:17 |
| теперь другая проблема которую никак не могу решить... хелп... с компонентом TSQLConnection все работает, к базе подключается, и все такое, правда апдейтится из формы не хочет, хотя я написал ApplyUpdates, он он не хочет, но это не суть. У меня из BDE Administrator не хочет коннектится, с обычным драйвером, скачал новый ODBC - Connector для MYSQL5, проверил он сам по себе работает, коннектится к базе. А когда делаю алиас для него в BDE, то хоть тресни не коннектится или когда коннектится выходит из BDE. В формах тоже самое происходит для компонента TDataBase указываю новый ODBC драйвер, и имя базы, пытаюсь подконнектится, пишет, укажите алиас, указываю алиас, поле драйвер становится пустым, коннечусь и вылетает. уже два дня сижу Мне нужны сомпоненты TQuery TUpdateSQL. почему через BDE не работает не пойму |
| Автор: Boiskaut 25.4.2006, 08:10 |
| скачай компоненты Zeos и с ними все работает!!!! |
| Автор: zevs5 13.11.2006, 02:05 |
| Подскажите механизм или пример вывода информации из базы, DBGrid не подходит, нужно в лабели и в Edit выводить данные, коннект проходит отлично, запрос формирую без проблемм, а вот как вывести инфу на форму не знаю. |
| Автор: Vas 13.11.2006, 09:49 |
| DBEdit, DBText равное количеству полей возвращаемых запросом, соответственно связываем их с DataSource запроса. Ну и кнопочки вперед/назад придется на форму добавить чтобы перемещаться по записям запроса, не всегда же возвращается запросом одна строка |
| Автор: Rodman 13.11.2006, 12:17 |
| берешь и качаешь с http://www.google.ru/search?q=libmysql.dll+download&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:ru:official |
| Автор: zevs5 13.11.2006, 19:07 |
| Разобрался с выводом данных на форму, их оказывается можно выводить в любую форму не обязательно DBEdit, DBText |
| Автор: Rodman 13.11.2006, 19:42 |
| просто соединяются с данными на прямую... а в Edit необходимо руками прописывать вывод... Если все понял пометь топик, как решен... |
| Автор: Vas 13.11.2006, 20:48 | ||
Естественно, просто я писал как проще |
| Автор: Rodman 13.11.2006, 21:05 |
| |
| Автор: zevs5 14.11.2006, 03:02 |
| Спасибо всё заработало как надо, а ручками как вы выржаетесь всётаки проще и больше можно сделать, и наконец таки с TreeView разобрался как добавлять ноды удалять картинки вешать, а больше всего доволен что из базы могу сформировать все записи и отсортировать, ещё раз всем огромное спасибо за подсказки. На последок, никто не пользовал компонент от indi10 TIdDNSServer, а то ещё не врубился как его запустить в работу. |
| Автор: fidres 15.11.2006, 07:47 |
| кстати, сейчас сам сижу с такими же фишками. обошёлся без odbc/bde и прочей х..рни. просто нужно добавить в проект один файлик: mysql.pas... кидаешь в диру с прогой libmysql.dll (правда есть ньюанс: libmysql.dll нужна не выше 4-ой верси!) и всё! работаешь с базами и серваком - НАПРЯМУЮ!!! MySQL API - рулит! ;) правда есть ещё один ньюанс - обработка вводимых/выводимых данных придёца делать "на лету"... обрабатывать придёца "ручками", то бишь, закладывать эту самую обработку изначально в проге (имею в виду возможность обработки исключений, т.к. доп методом APIшка не даёт)... :о) но, думаю скорость передачи данных - тоже немаловажная весчь. API не тратит время на соединение с odbc/bde!!! так шо... на последок спешу пожелать нам всем удачи в освоении этой нелёгкой задачки! ;) кстать. подскажите кто-ниить по части нодов в тривьевах?.. надо динамически вставлять ветки и узлы в дерево. пытался вставлять из файла - получается не добавление, а просто замена... пониаю, что нужно использовать аппенд, но не могу сообразить как... :о/ |
| Автор: Vas 15.11.2006, 09:52 | ||
Добавлено @ 09:54 А вообще читаем http://www.delphikingdom.com/asp/viewitem.asp?catalogid=488 |
| Автор: zevs5 16.11.2006, 01:26 | ||
Чуть своего мнения по этому поводу, если из базы извлекаешь или из массива создаёшь дерево то естественно надо циклом пользоваться только главное не забывать выделять узел в который ты добавляешь дочерние узлы, а после завершения цикла снимать выделение (Select) и принудительно (Select := false;) указывать в выводимом цикле тогда дерево строится так как тебе хочется
|
| Автор: fidres 16.11.2006, 22:35 |
| Vas, zevs5, благодарю! =) сейчас, кстати, и испробую! как раз за несколько минут до того, как прочёл твой пост, нашёл эту статью! ;) |
| Автор: fidres 19.11.2006, 09:19 |
| Vas, шо т не получилось. :о( правда я значение Парента указывал nil... может поэтому глюкануло? но IMHO AddChild здесь как бы не уместно... мне ж надо добавить, а получается, что я ВСТАВЛЯЮ (не добавляю, а заменяю)... :? З.Ы. ещё парадокс выискался... букварь у меня есть. старенький правда... "Delphi 7. Справочное пособие.", А.Я. Архангельский. "БИНОМ", 2003 год. так вот там написано, что у TreeView'а есть функция Insert(Node: TTreeNode; const S: string): TTreeNode;! =[ чем же всё-таки можно добавить содержимое дерева из файла в TreeView?! |
| Автор: Vas 19.11.2006, 09:27 | ||
Метов AddChild как раз-таки добавляет ветку ничего не заменяя в указанную родительскую ветвь. Если указать родителя как nil то добавится ветвь в TreeView никому не подчиненная. Все должно работать без проблем. |
| Автор: fidres 19.11.2006, 09:46 | ||
то есть, даже если пытаться делать это AddChild'ом - то содержимое одного файла ЗАМЕНЯЕТ уже находящееся там другое более ранее дерево... как сделать LoadFromFile(), добавив его содержимое к уже существующему. причём добавить в рут... у меня получается, что я гружу с файла дерево - всё нормально. потом кликаю на другой чек_бокс - и у меня второе дерево должно загружаться в следующее дерево, не заменяя уже существующее в TreeView'е. + node_1 (загруженный из 1-го файла при выборе чек_бокса 1:: в файле содержится полная структура дерева!) + node_2 (загруженный/добавленный из 2-го файла при выборе чек_бокса 2) а у нас с тобой получается я просто вставляю новый нод. а потом как мне допустим в него загрузить данные из файла? указать ID нода и попытаться загрузить туда данные из файла? З.Ы. и ещё ньюанс! если делать AddChild, то мы вставляем строку. а мне нужно передать туда структуру файла (IMHO TString)... Добавлено @ 09:56 косяк. LoadFromFile() - процедура TreeView' а... даже если создать нод (либо ветку) - то загрузить из файло туда ничего через LoadFromFile() не удастся... :о( насколько я понимаю... |
| Автор: fidres 19.11.2006, 10:04 | ||
а потом из стёка выгружать уже на форму... м-да... не выходит. :о/ а Insert я всё же нашёл! =) правда через него тож в нод из файла фиг чё вставишь... |
| Автор: fidres 19.11.2006, 11:17 | ||
простите за тупой вопрос. |
| Автор: Vas 19.11.2006, 13:51 | ||
| Pointer это указатель А вот примерная процедура, читает из типизированного файла структуры записей и названия этих записей выгружает в ветку, причем не важно были там уже ветки или нет грузится в первую ветвь добавлением.
|
| Автор: Vas 19.11.2006, 17:24 |
| Надеюсь как читать из текстового файла сам догадаешься? |
| Автор: fidres 20.11.2006, 12:29 |
| :о) чувствую, надоел я тебе. ;) ну ты уж не обессуть. я тут вот чего подумал... там же как бы структура дерева в файло лежит... с нодами и ветвями... AddChild будет строить именно такую структуру, как в файло или просто накидает веток в первый попавшийся нод? а с файло прочитать - проще некуда... ;) для чего мне книжки, спрашивается. |
| Автор: Vas 20.11.2006, 14:28 | ||||
Зачем ветки хранишь во многих файлах, храни в одном.
Просто накидает веток
Напиши такой же только выкинь Clear ну и передай указатель на твой TreeView. Замени Stream на File и так далее, вроде сложного ничего. |
| Автор: fidres 20.11.2006, 17:33 | ||
блин. ну и жизнь пошла!.. :о) пол-рояля разобрали, а того чего надо - так и не нашли! :о/ ладно. буду ломать голову дальше. да пребудет с нами Сила и Святой Коннектий! ;) |
| Автор: fidres 29.11.2006, 01:57 | ||||
| Vas, блин! ну ты прикинь! так и не могу с этой фигнёй раскидаца... :о/ начал прикидывать чё - куда и чё откуда... решил писать сам. смысл в том, что ни один из методов "автоматизации" не подходит. в ручную стал закидывать структуру дерева в стёк, а уже оттуда пытаца считывать и добавлять в новое дерево... ну это Бог с ним. вопрос вот в чём:
в юзез ComCtrl - есть. чего ему ещё надо??? |
| Автор: Vas 29.11.2006, 13:17 |
| Скорее всего скомпилированный модуль в дельфе не содержит этого типа, скопируй нужный класс в свой проект и используй. У меня кстати тоже при объявлении переменной типа TTreeStrings ошибка такая же вылетает. |
| Автор: fidres 30.11.2006, 05:37 |
| Vas, может тогда попытаться скомпилять исходник файло с данным классом? обычно это делается добавлением в проект нужного модуля и компиляцией проекта. потом скомпилированные бинарники добавляем в диру с либами или ещё куда и... вуа-ля! ;) |
| Автор: Vas 30.11.2006, 07:48 |
| Неа, это придется тебе дельфевский пакет в котором содержится данный модуль пересобрать и его уже перекомпилировать. Проще этот классв свой модуль вынести. |
| Автор: fidres 1.12.2006, 05:17 |
| Vas, кстати. нашёл пару статей в Королевстве по своей тематике... вот одна из них: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=771 есть ещё одна "DBTreeView своими руками" Елены Филипповой... в ней немного не то, но тоже неплохо описано... правда адресок не вспомню ща... правда взаимодействие с БД посредством BDE... ;) у меня ваще-то MySQL API работает для этих целей... а вот точного описания моей задачи - нигде пока не нашёл... пообещали тут ещё у бывалых поинтересоваца... но... в любом случае буду сюда о находках отписывать. ;) |
| Автор: Vas 1.12.2006, 07:51 |
Так у тебя из БД грузится или из файла? Если из БД то бери статью с дельфикингдом за основу и вперед, разницы никакой что BDE что через WinAPI. |
| Автор: fidres 2.12.2006, 09:11 |
| Vas, да нет. это не БД из файло... то, что у меня с БД работает - это меня не интересует. меня интересует вопрос КАК из файло в тривьев ДОБАВИТЬ ГОТОВЫЕ деревья... З.Ы. и кстати не WinAPI, а MySQL API... это разные вещи. |
| Автор: SergeBS 4.12.2006, 17:41 | ||||
| fidres, Vas,
Потому что если объявлен класс, то либо надо заводить экземпляр класса, либо классом (своим) объявлять наследника этого класса. Т.е. есть класс TStrings - объявляй MyString : TStrings; и будет тебе счастье
|
| Автор: fidres 5.12.2006, 05:03 |
| SergeBS, почитай внимательно чего и куда я объявляю: http://forum.vingrad.ru/index.php?showtopic=87376&view=findpost&p=940692 класс объявляется в дельфийском модуле. но когда я начинаю использовать TreeStrings - у меня происходит затык с "андэкларед тайп" (недикларированный тип). Vas, предложили сделать проще с тривьевом - закинуть туда ПОЛНОЕ ДЕРЕВО ВСЕХ нужных мне СТРОК из файло, а потом уже регулировать их появление путём скрытия/отображения... неплоха идейка? ;) к тому же, время загрузки из одного файла, думаю, чуть меньше, чем постепнная подгрузка поочерёдно нескольких... |
| Автор: malor 5.6.2007, 16:49 |
| Надо настроить работу с MySQL 5.0.37 через ADO(используя Zeos). Кинул на форму компонент TZConnection(дал имя MyZConnection) и TZQuery. Прописал в свойствах экземпляра MyZConnection: HostName - localhost Database - имя БД Port - 5037 При запуске компиляции проги выдает:"Requested database driver was not found." Файл libmySQL.dll(размер - 1 531 904) брал из bin-овского каталога и кидал в папку проекта, а также в вендовую system32. Но, как видите, безрезультатно. Что делать? Delphi 7, WinXP_sp2 |
| Автор: Rodman 5.6.2007, 16:55 |
может не подходить или битый... попробуй его же через dbExpress - пойдет ли??? |
| Автор: malor 6.6.2007, 08:43 | ||
На http://forum.vingrad.ru/forum/topic-34452/anchor-entry1138125/15.html говорят, нужно файл от третьей версии MySQL использовать. Действительно? Аналогичная проблема у парней походу и на http://forum.vingrad.ru/topic-75912.html Delphi 7, zeosdbo-6.1.5-stable, MySQL 5.0.37, WinXP |
| Автор: fidres 14.6.2007, 17:02 |
| бдЭкспресс - такая лажа! он и нормальными библиями глючит постоянно... то работает, то нет... я от него открестился. при этом надо учесть, что одной либы не вполне достаточно. для этой либы надо ещё что-то вроде интерфейса писать. то есть, какая функция чего куда и зачем возвращает. а чтоб написать что-то похожее надо эту либу расшить и поглядеть чего там есть, какие функции, какие переменные и параметры... морока конечно, но зато когда в проге оно уже будет крутица - никаких дбЭкспрессов и АДОшек нахрен не надо будет! и время обращения к самой базе - МИНИМАЛЬНОЕ, потому как либа будет работать напрямую с твоей прогой, а не переадрисовывать обращение в АДО или дбЭкс!!! у меня есть такая описаловка, но она мускуль выше 4-ки не распознаёт. там просто всё глобально поменяли. и найти посвежее что-нибудь сейчас (в век коммерческих отношений) - думаю нереально. вот и приходится работать с 4-тым мускулем... но зато напрямую, без посредников. |
| Автор: SergeBS 18.6.2007, 12:21 | ||
fidres,
Угу. Только в секции interface его нет, и с чего это ты его надеешься увидеть - я не понимаю. А в implementation я что угодно наобъявлять могу - мое ВНУТРЕННЕЕ дело. Этот - для загрузки в поток и выгрузки из него. |
| Автор: qwe113 18.6.2007, 15:42 | ||||
Одно дело, если бы ты писал сервант, то естесвенно, компоненты здесь не нужны(исходя из высоких требований к серверу). Но совсем все по другому, когда пишешь клиента - особой скорости не выиграешь(есс-но, выигрыш есть, примерна сотая доля процента) - потому как клиент никогда(ну может быть в исключительных случаях) не нисет !большой! нагрузки. Есс-но, чем больше знаешь, тем больше понимаешь. Но реализовывать это все самому(всмысле общение с сервом на апи), в данном случае бессмысленно - снова мастерить велосипед?
У меня анологичная проблема(Дельфи 7). Ответ на вопрос до сих пор не нашел. Однако, в Дельфи 8 делаю все анологично - все работает прекрасно! Как так? ЗЫ: Не забудь ответить на вопрос, что надо сделать в Д7, чтоб библа грузилась. ЗЫЗЫ:Неужели dbExpress - фуфло? В одних местах хваля, в других - нет... |
| Автор: fidres 14.9.2007, 05:53 | ||
|
| Автор: anil 10.5.2009, 19:20 | ||||
помогите пожалуйста, кто знает, как заставить увидеть dll? |
| Автор: fidres 19.5.2009, 04:48 | ||
даю маячёк! http://forum.vingrad.ru/act-ST/f-88/t-134547.html http://forum.vingrad.ru/forum/topic-161981/0.html и куча других тем... просто надо поискать. (и кстати, на будущее, неплохо указывать в чём и с чем работаешь: версии программ, наименование компонентов и прочие "примудрости") |
| Автор: Akella 19.5.2009, 09:17 | ||
это военная тайна, при чём у многих пользователей форума |