Я пытался реализовать функции в MySQL C-разъем из класса «Сервер» в моем проекте.Вот как выглядит конструктор класса: (DATABASE и SOCKET #defined).
Server::Server(MYSQL& conn)
{
mysql_init(&conn);
mysql_real_connect(&conn,"localhost","username","passwd",DATABASE,0,SOCKET,0);
if (mysql_real_connect(&conn,"localhost","santu","hello",DATABASE,0,SOCKET,0) == NULL) {
cout << mysql_error(&conn) << endl;
}
else
{
cout << "Connected." << endl;
}
}
Когда я пытаюсь вызвать класс из "main.cpp" с дескриптором соединения, это вызывает ошибку.
Cannot connect twice. Already connected.
но если методы были написаны вне класса, он работает без нареканий.По сути, это работает.
#include "Server.hxx"
MYSQL san;
int main(int argc, char** argv)
{
mysql_init(&san);
mysql_real_connect(&san,"localhost","santu","hello", "test",0,"/tmp/mysql.sock",0);
cout << mysql_error(&san) << endl;
return 0;
}
Но это не так и не получается с вышеупомянутой ошибкой.
#include "Server.hxx"
MYSQL san;
int main(int argc, char** argv)
{
Server S0(san);
return 0;
}