| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Базы данных > Borland C++ & MySQL |
| Автор: GHopper 11.11.2004, 15:10 |
| Здравствуйте! Возникла проблема при написании приложения для работы с базой данных MySQL в C++ Builder 6. Файлы помощи к C++ Builder не дали ответа на мои вопросы, хотя и разъяснили как работать с TTable, TDataSource и с компонентами из закладки "Data Controls". Проблема следующая - в объекте TTable есть свойство "DatabaseName", которое не содержит БД MySQL. Там, как я понял, содержатся псевдонимы БД. Лезу в SQL Explorer и пытаюсь создать псевдоним для MySQL. Жму "New" и опять получаю список, не содержащий MySQL. Оставляю эту затею. Пытаюсь через dbExpress. На него в хелпе информации еще меньше! Свойство объекта TSQLconnect "ConnectionName" содержит "MySQLConnect". Все вроде-бы должно работать, но вот опять проблема - "Error: Unable to Load libmysql.dll" (Сервер моей БД в этот момента загружен). Нахожу этот libmysql.dll и пихаю во все папки, в какие только можно (папка проекта, системная). Ничего не помогает! Не стал пробовать с ADO и др. методами, а решил поискать рабочий пример. В MySQL есть программка Jethro Wright, датированная 1998 г. Попробовал самостоятельно создать консольное приложение по подобию и нифига не вышло - даже при простом подключении mysql.h возникает две ошибки. Короче кругом засада! Люди добрые, помогите? Укажите путь истинный. А вообще хотелось бы почитать литературу, подробно раскрывающую создание приложений для работы с БД. Заранее огромное СПАСИБО. |
| Автор: Hroft 13.11.2004, 13:01 |
| Лично я предпочитаю все делать через АДО, все просто, удобно и легко переносимо на другие СУБД. Нужен ОДБС-драйвер MySQL, и все. Ставишь, формируешь коннекшн стринг с помощью все того же компонента TADOConnection, и в TADOQuery выполняешь все свои запросы. Можно небольшую оболочку на все это навесить, и только чере абстрактный интерфейс работать, тогда вообще проблем не будет в будущем. А с этими TTable на самом деле не стоит и разбираться, на мой взгляд, хотя ничего сложного там тоже нет, кроме отсутствия подержки MySQL фирмой Борланд/Инпрайз/Фиг_знает_будет_ли_вообще_такая_фирма_в_дальнейшем. |
| Автор: azesmcar 16.11.2004, 09:15 |
| В папке MySQL есть папка lib...Там библиотека для работы с MySQL напрямую, через сокеты...быстро, надежно, xотя и немного сложновато но зато никакиx драйверов ставить не нужно...xотя не уверен что тебе это подойдет, зависит конкретно от задачи... |
| Автор: cabich 19.11.2004, 08:10 |
| А в пятом билдере как быть он на mysql.h ругается!!! Добавлено @ 08:10 в mysql_com.h ошибка Type name expendet на строке my_socket fd; !!! Че за Ерунда???? |
| Автор: azesmcar 19.11.2004, 08:23 |
| Type name expected в данном случае означает что он не видит класса my_socket... Посмотри, может Include directories не в порядке...или какого нибудь файла не xватает...у меня 6-ой билдер, все нормально компилируется..и под визуал С++ тоже...без разницы...Код тот же самый... |
| Автор: cabich 23.11.2004, 22:33 |
| У меня таже ошибка была я короче сделал так Подключите к проекту libMySql.lib, положите заголовочные файлы из поставки MySQL в директорию заголовочных файлов вашего компилятора, либо в каталог с программой, либо вообще куда душе угодно (лишь бы сами их не потеряли), libmysql.dll в каталог с программой, и пользуетесь функциями API MySQL, которые подробнейшим образом описаны в поставляемой вместе с сервером документацией. libmysql.lib и libmysql.dll берутся после установки дистрибутива MySQL в каталоге lib\opt. libmysql.lib ОБЯЗАТЕЛЬНО должен работать с libmysql.dll ТОЙ ЖЕ поставки/версии. По этой причине НАСТОЯТЕЛЬНО НЕ рекомендуется хранить libmysql.dll в системном каталоге WINDOWS! Храните свою libmysql.dll в каталоге со своей программой. Для C++ Builder получить libmysql.lib нужно импортом из libmysql.dll: > implib libmysql.lib libmysql.dll Из заголовочных файлов требуются: mysql.h mysql_com.h mysql_version.h В последних версиях ещё и my_alloc.h Всё это добро берётся после установки дистрибутива MySQL в каталоге include. Из всех в программе подключается только mysql.h. Перед ним обязательно должно быть подключен windows.h #include <windows.h> #include <mysql.h> Особенности Билдеровского VCL: В программах, использующих VCL, компилятор ругается на my_socket, объявленную в mysql.h как #define my_socket SOCKET. Заменяем на #define my_socket UINT_PTR и всё работает. (SOCKET в winsock.h объявлен как typedef UINT_PTR SOCKET). но всеравно он не находит функцию mysql_connect() поэтому искаю как юзать ADO!! Обьясните как Вывести на форму Зачения В полях таблицы!!!!!!!!!!!!!!! |
| Автор: azesmcar 24.11.2004, 13:46 |
| не знаю как насчет импорта из ДЛЛ, я сделал иначе... libmysql.lib под билдером работать не станет... Зайди в каталог билдера, {BCBPATH}/bin так кажется... Там должно быть что то вроде coff2ome.exe или ome2coff.exe Запускаешь даешь на вxод свой либ и устанавливаешь на выxoд в какой нибудь другой файл...и уже его присабачиваешь к своему проекту... Кстати этот самый coff2omf или ome как его там почему то ненормально работает... Какая то проблема с размерами файла, точнее говоря не переводит файлы размером больше чем какое то X число в билдеровский формат...Но именно с libmysql.lib все проxодит нормально... |
| Автор: Гость_Cabich 26.11.2004, 08:54 |
| Как с помощью ADO таблицу в Grid или мемо Запихнуть? |