|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.07.2009, 20:37 | #1 |
Участник клуба
Регистрация: 06.04.2009
Сообщений: 1,524
|
Работа с MySQL в C++
Небольшая статья по взаимодействию с СУБД MySQL из программы на C++
Немного теории Код:
Функция инициализации. Код:
Код:
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. Мы флагами пользоваться не будем. Функция выполняющая запрос Код:
Код:
Код:
Код:
Код:
Код:
Код:
Для работы в 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 кб Последний раз редактировалось rpy3uH; 16.02.2011 в 16:09. |
30.07.2009, 20:39 | #2 |
Участник клуба
Регистрация: 06.04.2009
Сообщений: 1,524
|
Вывод в консоль
Вывод таблиц в консоли. Интерфейс правда не супер, но для практики думаю хватит.
В коде есть комментарии. Если будут вопросы задавайте здесь Код:
|
30.07.2009, 20:41 | #3 |
Участник клуба
Регистрация: 06.04.2009
Сообщений: 1,524
|
Графический интерфейс
Очередная статья по взаимодействию с СУБД MySQL из программы на С++
Мутим простейший интерфейс Кидаем на форму: TLabel (5 шт.). В свойство Caption пишем хост, порт и т.д. TEdit (5 шт.). Названия TEdit'ов: hostText, userText, passText, dbText и portText. TButton (2 шт.). В свойства Caption пишем "Пошел!" и "Закрыть". TMemo (1 шт.) TStringGrid (1 шт.) Подключаем заголовочные файлы, библиотеку и объявим одну константу Код:
А в обработчик копки "Пошел!" пишем следующее Код:
|
30.07.2009, 20:44 | #4 |
Участник клуба
Регистрация: 06.04.2009
Сообщений: 1,524
|
Графический интерфейс. Специальный проект
Теперь напишем "специальный" клиент для базы данных Библиотека
Для начала создадим базу банных Код:
Компоненты: TLabel и TEdit . по 5 штук, как из предыдущей статьи ListBox - 1 шт список книг GroupBox - 1 шт. В нем 2 TLabel и 2 TEdit, название книги и автор TButton - 5 шт. Их желательно обозвать как у меня (Удалить, Изменить, Добавить, Подключиться, Закрыть). BitBtn - 1 шт кнопка обновление данных. TTimer - 1 шт проверка содинения. Все подробности на скрине. Объявляем необходимые переменные и подключаем все что нужно... Код:
Настройки таймера: Код:
Код:
Код кнопки "Подключиться" Код:
Код:
|
30.07.2009, 20:45 | #5 |
Участник клуба
Регистрация: 06.04.2009
Сообщений: 1,524
|
Графический интерфейс. Специальный проект. Продолжение
Код кнопки "Добавить"
Код:
Код:
Код:
Код:
Код:
Вся статья (сделана под форум). В аттаче. Последний раз редактировалось psycho-coder; 30.07.2009 в 21:08. |
31.07.2009, 13:43 | #6 |
Unix C++ developer
Форумчанин
Регистрация: 16.04.2007
Сообщений: 651
|
Если кому то интересно - могу аналогично рассказать, как работать с Mysql, используя libmysql++, в частности под юникс, без всяческих IDE
|
01.08.2009, 00:47 | #7 |
Регистрация: 23.07.2009
Сообщений: 3
|
Простите, но я бы хотел узнать описание client_ flag и unix_socket. Прошу прощение если вопрос смешной, но я только-только начинаю изучать. Заранее благодарю.
|
01.08.2009, 13:17 | #8 |
Участник клуба
Регистрация: 06.04.2009
Сообщений: 1,524
|
Если параметр 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. Тут я даже не знаю что добавить. |
22.08.2009, 20:16 | #9 |
Новичок
Джуниор
Регистрация: 21.08.2009
Сообщений: 2
|
Я только не понял а что выводить данные можно только по номеру поля
printf(row[0]); ? а по имени что нельзя ? например printf(row["name"]); ? Последний раз редактировалось malik555; 22.08.2009 в 20:25. |
24.08.2009, 11:28 | #10 |
Участник клуба
Регистрация: 06.04.2009
Сообщений: 1,524
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с MySQL в С++ с использованием библиотеки mysql++ | oleg kutkov | Visual C++ | 5 | 30.12.2010 16:40 |
Работа с MySQL в Дельфи 7 | drakhar | БД в Delphi | 8 | 01.12.2010 21:13 |
Работа с MySQL | igroman | PHP | 10 | 29.09.2008 16:15 |
Работа с MySql | zetrix | PHP | 1 | 18.06.2007 15:02 |