![]() |
|
|||||||
![]() |
|
|
Опции темы |
|
|
#1 |
|
mind rebirth -0.1%
Участник клуба
|
Небольшая статья по взаимодействию с СУБД MySQL из программы на C++
Немного теории Код:
Функция инициализации. Код:
Где соответственно host — компьютер, на котором запущена СУБД MySQL, user — имя юзера для подключения, passwd — пароль, db — название предполагаемой для использования базы данных, port — порт, unix_socket — сокет или pipe-канал, который необходимо использовать. Код:
CLIENT_COMPRESS — используется сжатие. CLIENT_FOUND_ROWS — возвращать число найденных строк. CLIENT_IGNORE_SPACE — делает все имена функций зарезервированными словами. CLIENT_INTERACTIVE — разрешает interactive_timeout секунд бездействовать (вместо wait_timeout) перед закрытием подключения. CLIENT_NO_SCHEMA — запрещает синтаксис вида "db_name.tbl_name.col_name" (имя_базы_данных.имя_таблицы.имя_ко лонки). Используется для ODBC. CLIENT_ODBC — устанавливает то, что это клиент ODBC. CLIENT_SSL — используется защищенный протокол SSL. Мы флагами пользоваться не будем. Функция выполняющая запрос Код:
Функция возвращяющая строку с описанием ошибки Код:
функция, которая получает все строки результата запроса и хранит их в буфере-клиенте Код:
Получает количество строк в результате запроса Код:
Получает количество полей (столбцов) в результате запроса Код:
Заполняет массив полей для текущей строки Код:
Заполняет структуру для текущего поля (fieldnr) Код:
Начальная "настройка" Для работы в Builder необходимо конвертировать libmysql.lib. Для этого, нужно открыть консоль и набрать там это Код:
а "C:\Program Files\Borland\CBuilder6\Lib\libmysq l_.lib" конвертированная У каждого пути будут свои. Также в папке с программой (или в "C:\Program Files\Borland\CBuilder6\Lib\") должны быть libmysql_.lib, а для VS libmysql.dll. Заголовочные файлы можно бросить в папку с программой или в "C:\Program Files\Borland\CBuilder6\Include\". Для VS "C:\Program Files\Microsoft Visual Studio Х.0\VC\include". Где Х - версия VS. В среде MS VC++ можно использовать библиотеку без конвертации, т.е. libmysql.lib. Все заголовочные файлы могут быть в папке с программой, но тогда нужно подключать их локально. Есть замечания для VC++ WinForms. Так как типы String^ и char[] несовместимы, то для конвертирования из String^ в char[] можно использовать следующие функции (взято из MySQL++): Код:
Код:
libmysql_lib.rar 2.5 кб libmysql.lib.rar 5.1 кб LibMySQL.dll.rar 447 кб include.rar 73.7 кб
__________________
Научитесь юзать HELP! >_< Обучая других, мы учимся сами. Включил синдром старого Еврея Последний раз редактировалось psycho-coder; 30.07.2009 в 22:06. |
|
|
|
|
|
#2 |
|
mind rebirth -0.1%
Участник клуба
|
Вывод таблиц в консоли. Интерфейс правда не супер, но для практики думаю хватит.
В коде есть комментарии. Если будут вопросы задавайте здесь Код:
__________________
Научитесь юзать HELP! >_< Обучая других, мы учимся сами. Включил синдром старого Еврея |
|
|
|
|
|
#3 |
|
mind rebirth -0.1%
Участник клуба
|
Очередная статья по взаимодействию с СУБД MySQL из программы на С++
Мутим простейший интерфейс Кидаем на форму: TLabel (5 шт.). В свойство Caption пишем хост, порт и т.д. TEdit (5 шт.). Названия TEdit'ов: hostText, userText, passText, dbText и portText. TButton (2 шт.). В свойства Caption пишем "Пошел!" и "Закрыть". TMemo (1 шт.) TStringGrid (1 шт.) Подключаем заголовочные файлы, библиотеку и объявим одну константу Код:
А в обработчик копки "Пошел!" пишем следующее Код:
__________________
Научитесь юзать HELP! >_< Обучая других, мы учимся сами. Включил синдром старого Еврея |
|
|
|
|
|
#4 |
|
mind rebirth -0.1%
Участник клуба
|
Теперь напишем "специальный" клиент для базы данных Библиотека
Для начала создадим базу банных Код:
Компоненты: TLabel и TEdit . по 5 штук, как из предыдущей статьи ListBox - 1 шт список книг GroupBox - 1 шт. В нем 2 TLabel и 2 TEdit, название книги и автор TButton - 5 шт. Их желательно обозвать как у меня (Удалить, Изменить, Добавить, Подключиться, Закрыть). BitBtn - 1 шт кнопка обновление данных. TTimer - 1 шт проверка содинения. Все подробности на скрине. Объявляем необходимые переменные и подключаем все что нужно... Код:
Настройки таймера: Код:
Код:
Код кнопки "Подключиться" Код:
Код:
__________________
Научитесь юзать HELP! >_< Обучая других, мы учимся сами. Включил синдром старого Еврея |
|
|
|
|
|
#5 |
|
mind rebirth -0.1%
Участник клуба
|
Код кнопки "Добавить"
Код:
Код:
Код:
Код:
Код:
Вся статья (сделана под форум). В аттаче.
__________________
Научитесь юзать HELP! >_< Обучая других, мы учимся сами. Включил синдром старого Еврея Последний раз редактировалось psycho-coder; 30.07.2009 в 22:08. |
|
|
|
|
|
#6 |
|
Unix C++ developer
Участник клуба
Регистрация: 16.04.2007
Адрес: Крым, Бахчисарайский район
Сообщений: 588
Репутация: 392
|
Если кому то интересно - могу аналогично рассказать, как работать с Mysql, используя libmysql++, в частности под юникс, без всяческих IDE
|
|
|
|
|
|
#7 |
|
Регистрация: 23.07.2009
Сообщений: 3
Репутация: 10
|
Простите, но я бы хотел узнать описание client_ flag и unix_socket. Прошу прощение если вопрос смешной, но я только-только начинаю изучать. Заранее благодарю.
|
|
|
|
|
|
#8 |
|
mind rebirth -0.1%
Участник клуба
|
Если параметр unix_socket не равен NULL, то данная строка указывает сокет или именованный канал, который следует использовать. Это касается исключительно UNIX систем (по крайней мере в винде не встречал такого), т.к. в этих системах можно вместо номера порта указывать их строковый эквивалент.
Например: порт 80 (веб браузер по умолчанию) можно записать как web, 21 как ftp, 20 как ftpdata и т.д. (Если где-то ошибся просьба меня исправить, чтобы не вводить в заблуждение). Следует учитывать, что тип соединения определяется параметром host. Величина параметра client_flag обычно равна 0, но при особых обстоятельствах может быть установлена как комбинация следующих флагов: CLIENT_COMPRESS — Использовать сжатие при соединении с сервером. CLIENT_FOUND_ROWS — возвращать число найденных строк. (При использовании запросов, изменяющих данные, возвращать не число измененных записей, а число записей, найденных в таблице.) CLIENT_IGNORE_SPACE — делает все имена функций зарезервированными словами. CLIENT_INTERACTIVE — разрешает interactive_timeout секунд бездействовать (вместо wait_timeout) перед закрытием подключения. CLIENT_NO_SCHEMA — запрещает синтаксис вида "db_name.tbl_name.col_name" (имя_базы_данных.имя_таблицы.имя_ко лонки). Используется для ODBC. Т.е. Запретить клиенту использование полной формы указания на столбец базы данных database, table.column , чтобы скрыть структуру базы данных. CLIENT_ODBC — Указать серверу, что клиент является подключением ODBC. CLIENT_SSL — используется защищенный протокол SSL. Тут я даже не знаю что добавить.
__________________
Научитесь юзать HELP! >_< Обучая других, мы учимся сами. Включил синдром старого Еврея |
|
|
|
|
|
#9 |
|
Новичок
Регистрация: 21.08.2009
Сообщений: 2
Репутация: 10
|
Я только не понял а что выводить данные можно только по номеру поля
printf(row[0]); ? а по имени что нельзя ? например printf(row["name"]); ? Последний раз редактировалось malik555; 22.08.2009 в 21:25. |
|
|
|
|
|
#10 | |
|
mind rebirth -0.1%
Участник клуба
|
Цитата:
Код:
Вывод по имени, поищу. Сейчас я не дома.
__________________
Научитесь юзать HELP! >_< Обучая других, мы учимся сами. Включил синдром старого Еврея |
|
|
|
|
![]() |
| Опции темы | |
|
|
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Работа с MySQL в С++ с использованием библиотеки mysql++ | oleg kutkov | Общие вопросы C/C++ | 4 | 20.09.2009 16:38 |
| Работа с MySql через DirectMysqlObjects | tolicq | БД в Delphi | 1 | 28.05.2009 13:10 |
| Работа с MySQL | igroman | PHP и другие серверные скрипты | 10 | 29.09.2008 17:15 |
| Работа с MySQL в Дельфи 7 | drakhar | БД в Delphi | 6 | 09.08.2008 03:29 |
| Работа с MySql | zetrix | PHP и другие серверные скрипты | 1 | 18.06.2007 16:02 |