Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Связь С++ и Mysql, Использование MySQL в С++ программах 
:(
    Опции темы
alver
Дата 4.4.2008, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 27.10.2006
Где: Питер

Репутация: нет
Всего: нет



Здравствуйте.
Сразу кажу, поиском пользовался, подобные темы читал, но так ничего сделать и не смог(((
Объясните на пальцах плиз, как же всё таки подключить MySQL к С++??
Я из всего прочитанного понял, что надо использовать хедер mysql.h Я его беру, копирую в папку с хедерами (юзаю Msf VS2008). В проге пишу:
Код

#include <string.h>
#include <mysql.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

static void change_user(MYSQL *sock,const char *user, const char *password,
            const char *db,my_bool warning)
{
  if (mysql_change_user(sock,user,password,db) != warning)
  {
    fprintf(stderr,"Couldn't change user to: user: '%s', password: '%s', db: '%s':  Error: %s\n",
        user, password ? password : "", db ? db : "",
        mysql_error(sock));
  }
}


int main(int argc, char **argv)
{
  MYSQL *sock;

  if (!(sock=mysql_init(0)))
  {
    fprintf(stderr,"Couldn't initialize mysql struct\n");
    exit(1);
  }
  mysql_options(sock,MYSQL_READ_DEFAULT_GROUP,"connect");
  if (!mysql_real_connect(sock,NULL,NULL,NULL,NULL,0,NULL,0))
  {
    fprintf(stderr,"Couldn't connect to engine!\n%s\n",mysql_error(sock));
    perror("");
    exit(1);
  }
  sock->reconnect= 1;

  if (mysql_select_db(sock,"test"))
  {
    fprintf(stderr,"Couldn't select database test: Error: %s\n",
        mysql_error(sock));
  }

  change_user(sock,"test_user","test_user","test",0);
  change_user(sock,"test",NULL,"test",0);
  change_user(sock,"test_user",NULL,"test",1);
  change_user(sock,"test_user",NULL,NULL,1);
  change_user(sock,"test_user","test_user","mysql",1);

  mysql_close(sock);
  exit(0);
  return 0;
}


Он просит файл mysql_com.h, я его тоже копирую. С ним же вылезает куча ошибок, которые указывают этот самый mysql_com.h
Вот такие например:
Error    1    error C2146: syntax error : missing ';' before identifier 'fd'    c:\program files\microsoft visual studio 9.0\vc\include\mysql_com.h    183    123

Error    2    error C4430: missing type specifier - int assumed. Note: C++ does not support default-int    c:\program files\microsoft visual studio 9.0\vc\include\mysql_com.h    183    123

Можно, пожалуйта, на пальцах объяснить действия, которые необходимо сделать, чтобы заработало?? 
PM MAIL GTalk Jabber   Вверх
Rififi
Дата 4.4.2008, 22:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 1
Всего: 36



я бы на твоем месте взял приплюснутую обёртку...

отрывок кода из примеров к mysql++

Код

    // Connect to the sample database.
    mysqlpp::Connection conn(false);
    if (conn.connect(db, server, user, pass)) {
        // Retrieve a subset of the sample stock table set up by resetdb
        // and display it.
        mysqlpp::Query query = conn.query("select item from stock");
        if (mysqlpp::StoreQueryResult res = query.store()) {
            cout << "We have:" << endl;
            for (size_t i = 0; i < res.num_rows(); ++i) {
                cout << '\t' << res[i][0] << endl;
            }
        }
        else {
            cerr << "Failed to get item list: " << query.error() << endl;
            return 1;
        }

        return 0;
    }


PM MAIL   Вверх
alver
Дата 4.4.2008, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 27.10.2006
Где: Питер

Репутация: нет
Всего: нет



Вот это я так понимаю?? http://tangentsoft.net/mysql++/
Но опять же, не смог её прикрутить.
Какая должна быть последовательность действий??
Скачал "mysql++-3.0.1.tar.gz" - а дальше куда чего?? Объясни плиз...
PM MAIL GTalk Jabber   Вверх
JackYF
Дата 5.4.2008, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 1
Всего: 162



Цитата(alver @  4.4.2008,  22:19 Найти цитируемый пост)
а дальше куда чего?? Объясни плиз... 

Неужели в readme библиотеки и гугле ничего не написано? smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
alver
Дата 5.4.2008, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 27.10.2006
Где: Питер

Репутация: нет
Всего: нет



Хм, прочитал и ничего не понял. Точнее сделал всё как на писано, но там [censored 6] фигня какая то. Ничего не подключается. Эти маны пишутся для тех, кто в этом всё каждый день купается. Мне например не реально в этом разобраться, поэтому и прошу вашей помощи.
Может кто нибудь удилить 10 минут, чтоб расписать последовательность действий??
PM MAIL GTalk Jabber   Вверх
JackYF
Дата 5.4.2008, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 1
Всего: 162



Цитата(alver @  5.4.2008,  11:18 Найти цитируемый пост)
Точнее сделал всё как на писано, но там [censored 6] фигня какая то. Ничего не подключается.

Ты ошибки-то давай, где и в чём затык конкретно. По шагам расписывать - альтруистов мало.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
MrDamian
Дата 10.4.2008, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 10.4.2008

Репутация: нет
Всего: нет



Для начала нужно скомпилировать библиотеку. Распаковываешь архив "mysql++-3.0.1.tar.gz" в удобное тебе место. Для примера в D:\temp\mysql++.  Внутри есть папка 2005 и 2003. Заходишь в 2005. Открываешь проект (файл .sln). Компилишь...
В папке debug появляюстся нужные тебе библиотеки.

Дальше создаешь новый проект. В solution explorer'e клацаешь правой кнопкой на имени проекта->properties->C/C++->General. В Additional Include Directories прописываешь путь к хедер файлам. Если в temp то путь такой: d:\TEMP\mysql++\lib. Также можешь добавить сюда путь к папке include самого мускула. Например, \c:\Program Files\MySQL\MySQL Server 5.0\include.
Дальше можешь либо в настройках указать библиотеки libmysql.lib (в папке с мускулом находиться) и mysqlpp_d.lib (в папке debug о которой я говорил раньше) либо написать такие строчки сразу после include'ов и кинуть в папку с проектом эти либы и соотетвующие dll (lybmysl.dll, myslpp_d.dll):

#pragma comment (lib, "mysqlpp_d.lib")
#pragma comment (lib, "libmysql.lib")


В инклудах пишешь include <mysql++.h>

Для соединения с базой исползуешь mysqlpp::conection
Для запросов mysqlpp::StoreQueryResult (для предыдущих версий mysql++ - mysqlpp::StoreQueryResult)

Вроде ничего не забыл. Если че спрашуй. 

А теперь может кто мне поможет...
У меня проблема следующая: когда добавляю из мускула записи на русском, то из проги отображаються иероглифами. Когда из проги добавляю - в самом мускуле иероглифы...
Кодировку выставляю cp1251
PM MAIL   Вверх
MrDamian
Дата 10.4.2008, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 10.4.2008

Репутация: нет
Всего: нет



Можно просто использовать С Api которые с мускулом идут
Для твоего когда, просто укажи путь к файлу mysql.h. (как я писал в предыдущем посте) и кинь libmysql.dll и libmysql.lib в папку с проектом. Должно работать.

Это сообщение отредактировал(а) MrDamian - 11.4.2008, 11:03
PM MAIL   Вверх
Yojidze
Дата 7.8.2008, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 24.3.2008

Репутация: нет
Всего: нет



Цитата

Дальше можешь либо в настройках указать библиотеки libmysql.lib (в папке с мускулом находиться) и mysqlpp_d.lib (в папке debug о которой я говорил раньше)


Куда конкретно прописать их надо кто в курсе???? помогите
PM MAIL   Вверх
Reptor
Дата 22.9.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



а что нужно если я спользую Microsoft Visual C++ 6.0 ? и пишу просто консольное приложение..? выше описаное мне не подходит
PM MAIL ICQ   Вверх
Reptor
Дата 23.9.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Я скачал MySQL под  винду... посмотрел какоето описание там написано
Цитата


Если на С++ и visual studio 6.0 то указываете в пути к библиотекам
libmysql.lib , ложите заголовочные файлы из поставки mysql в
директорию заголовочных фалов вашего компилятора. libmysql.dll в
системный каталог windows. И пользуетесь функциями api mysql



но я не вижу никаких заголовочных файлов а только и либ а только одна dll - libmySQL.dll

Добавлено через 11 секунд
что делать дальше?
PM MAIL ICQ   Вверх
Reptor
Дата 24.9.2008, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



ауу... кто нибудь подскажите что делать? де взять необходиме файлы?
PM MAIL ICQ   Вверх
Reptor
Дата 24.9.2008, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



смотрите я отыскал все необходимое

и есть пример но у меня 7 ошибок

ompiling...
test.cpp
c:\program files\microsoft visual studio\vc98\include\mysql_com.h(183) : error C2146: syntax error : missing ';' before identifier 'fd'
c:\program files\microsoft visual studio\vc98\include\mysql_com.h(183) : error C2501: 'SOCKET' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\mysql_com.h(183) : error C2501: 'fd' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\mysql_com.h(358) : error C2065: 'SOCKET' : undeclared identifier
c:\program files\microsoft visual studio\vc98\include\mysql_com.h(358) : error C2146: syntax error : missing ')' before identifier 's'
c:\program files\microsoft visual studio\vc98\include\mysql_com.h(359) : error C2059: syntax error : ')'
c:\program files\microsoft visual studio\vc98\include\mysql.h(73) : fatal error C1083: Cannot open include file: 'mysql_time.h': No such file or directory
Error executing cl.exe.

test.exe - 7 error(s), 0 warning(s)

а вот код
Код


#include "stdafx.h" 
#include <windows.h>
#include <mysql.h>
 
  
 MYSQL mysql; 
 MYSQL_RES *res; 
 MYSQL_ROW row; 
  
 void die(void){ 
   printf("%s\n", mysql_error(&mysql)); 
     exit(0); 

  
void main(void){ 
    unsigned int i = 0; 
  if (!mysql_init (&mysql)) abort (); 
  if (!(mysql_real_connect(&mysql,"localhost","root","", "kadry", 3306 , NULL , 0))) 
       die(); 
  if (mysql_select_db(&mysql,"kadry")) 
       die(); 
  if (mysql_query(&mysql,"SELECT * FROM students")) 
       die(); 
  if (!(res = mysql_store_result(&mysql))) 
       die(); 
  while((row = mysql_fetch_row(res))) { 
        for (i = 0 ; i < mysql_num_fields(res); i++) 
           printf("%s\t",row[i]); 
        printf ("\n"); 
     } 
  if (!mysql_eof(res)) 
   die (); 
  mysql_free_result(res); 
 mysql_close(&mysql); 




PM MAIL ICQ   Вверх
Reptor
Дата 24.9.2008, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



всё получилось  smile 
PM MAIL ICQ   Вверх
test4me
Дата 24.4.2009, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 24.4.2009

Репутация: нет
Всего: нет



to Reptor!
Помоги пожалуста такая же проблема програмлю на визуал 6 с++ где взять mysql_com.h? Спасибо всем кто даст решение этой проблемы... Суважением test4me!
PM MAIL   Вверх
ulcigor
Дата 13.5.2009, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 13.5.2009

Репутация: нет
Всего: нет



Цитата(test4me @ 24.4.2009,  18:02)
to Reptor!
Помоги пожалуста такая же проблема програмлю на визуал 6 с++ где взять mysql_com.h? Спасибо всем кто даст решение этой проблемы... Суважением test4me!

Во-первых установи mysql. В расширенных настройках установки укажи, что ты не ламер какой нить, а реальный прогрваммер smile И пусть он не мелачится, а устанавливает плюс ко всему прочему библиотеку, для программирования. Там появятся несколько папок, lib, и include, вот их надо добавить к линковщику, d ms visual c++ На этом не буду заострять внимание.  Следующее 
Указываем вот это:
#include <mysql.h>
#include <my_global.h>
#pragma comment(lib, "libmysql.lib")

Ну вот и всё.
Остальное дело техники. Пишем функции для соединения с БД
mysql_init( MYSQL *sock );
Инициализирует БД для нас
mysql_real_connect( MYSQL *sock, char *localhost, char *dbuser, char *dbpass, char *dbname,  int port, NULL, NULL )
Конектится... .

mysql_query( MYSQL *sock,  char *string );
Подаёт запрос на обработку

MYSQL_RES *res = mysql_store_result( MYSQL *sock );
Определяет ресурс, для запроса... .

mysql_fetch_row( MUSQL_RES *res )
Собственно сам запрос... .

mysql_close( MYSQL *sock );
Закрывает соединение... .

Это сообщение отредактировал(а) ulcigor - 8.6.2010, 18:58
PM MAIL   Вверх
Norby89
Дата 3.4.2010, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 16.2.2010

Репутация: нет
Всего: нет



При компиляции вышеприведенного кода произошло вот что:
1>------ Build started: Project: TestMySQL, Configuration: Debug Win32 ------
1>Compiling...
1>main.cpp
1>d:\mysql server 5.1\include\mysql_com.h(243) : error C2146: syntax error : missing ';' before identifier 'fd'
1>d:\mysql server 5.1\include\mysql_com.h(243) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\mysql server 5.1\include\mysql_com.h(243) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\mysql server 5.1\include\mysql_com.h(417) : error C2065: 'SOCKET' : undeclared identifier
1>d:\mysql server 5.1\include\mysql_com.h(417) : error C2146: syntax error : missing ')' before identifier 's'
1>d:\mysql server 5.1\include\mysql_com.h(418) : error C2059: syntax error : ')'
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\testmysql\testmysql\main.cpp(5) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\testmysql\testmysql\main.cpp(5) : error C2556: 'int mysql_init(MYSQL *)' : overloaded function differs only by return type from 'MYSQL *mysql_init(MYSQL *)'
1>        d:\mysql server 5.1\include\mysql.h(432) : see declaration of 'mysql_init'
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\testmysql\testmysql\main.cpp(5) : error C2373: 'mysql_init' : redefinition; different type modifiers
1>        d:\mysql server 5.1\include\mysql.h(432) : see declaration of 'mysql_init'
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\testmysql\testmysql\main.cpp(7) : error C2059: syntax error : 'constant'
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\testmysql\testmysql\main.cpp(7) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\testmysql\testmysql\main.cpp(9) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\testmysql\testmysql\main.cpp(11) : error C2065: 'sock' : undeclared identifier
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\testmysql\testmysql\main.cpp(11) : error C2275: 'MYSQL' : illegal use of this type as an expression
1>        d:\mysql server 5.1\include\mysql.h(313) : see declaration of 'MYSQL'
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\testmysql\testmysql\main.cpp(13) : error C2065: 'MUSQL_RES' : undeclared identifier
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\testmysql\testmysql\main.cpp(13) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\testmysql\testmysql\main.cpp(13) : error C2365: 'mysql_fetch_row' : redefinition; previous definition was 'function'
1>        d:\mysql server 5.1\include\mysql.h(547) : see declaration of 'mysql_fetch_row'
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\testmysql\testmysql\main.cpp(13) : fatal error C1903: unable to recover from previous error(s); stopping compilation
1>Build log was saved at "file://c:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\TestMySQL\TestMySQL\Debug\BuildLog.htm"
1>TestMySQL - 18 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

PM MAIL   Вверх
jonie
Дата 4.4.2010, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 4
Всего: 118



Код

#include <Winsock2.h>
#parma comment(lib, "Ws2_32.lib")


добавь для начала...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
azesmcar
Дата 5.4.2010, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



Цитата(jonie @  4.4.2010,  20:04 Найти цитируемый пост)
#parma comment(lib, "Ws2_32.lib")

#parma
#pragma
 smile

Добавлено через 2 минуты и 9 секунд
jonie

правда не совсем понял причем тут lib? Там ошибки компиляции.


Norby89
выложи проект поглядим.

PM   Вверх
jonie
Дата 5.4.2010, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 4
Всего: 118



Цитата

правда не совсем понял причем тут lib? Там ошибки компиляции.

azesmcar, а ты думаешь не понадобится после приключений со сборкой  ?)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
azesmcar
Дата 5.4.2010, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



Цитата(jonie @  5.4.2010,  20:13 Найти цитируемый пост)
azesmcar, а ты думаешь не понадобится после приключений со сборкой  ?) 

 smile ну раз вопрос так стоит, то думаю понадобится.
PM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.1545 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.