Hoje, eu quero aprender como usar C ++ para conectar ao mysql no Linux e realizar algumas operações simples.Eu pisei em muitos buracos.
O primeiro é o problema ambiental do mysql, que pode ser usado antes, de repente um erro é relatado:
Não é possível conectar ao servidor MySQL local através do soquete '/ var / run / mysqld / mysqld.sock' (2) "
Então eu pesquisei muitas respostas na Internet, incluindo alterar o arquivo de configuração, baixar e atualizar mysql-client, mysql-server, mysql-dev, etc., mas não obtive nenhum resultado depois de muito tempo, então eu acabei de deletar o mysql e reinstalá-lo.Veja detalhes como o mysql deletado legal , quero big brother para me dizer o que está acima da razão orz Deus encontrou, murcha, porque eu não abri o serviço just-machine do mysql (- _-). Eu vi essa solução de erro antes de saber.
Uma coisa a dizer, é muito legal, e depois reinstalar, você pode ir na Internet para pesquisar o link de instalação, não há muitos bugs.
Então entre no tópico, se você quiser usar C ++ para operar o banco de dados, você pode primeiro criar o banco de dados e a tabela no mysql, caso contrário ele não será conectado. A tabela que construí aqui se
parece com isto: Então eu importo o arquivo de cabeçalho mysql / mysql.h em C ++ e uso as funções internas para acessar o banco de dados. Depois de escrever o código, compilar diretamente com g ++ reportará um erro:
mysql.h: Não existe esse arquivo ou diretório
Este erro ocorre porque o sistema não tem a biblioteca de desenvolvimento mysql instalada.
Execute o seguinte comando para instalar
sudo apt-get install libmysql + ± dev. Ao
compilar, você precisa adicionar a conexão -lmysqlclient.
O tempo para compilar o código-fonte é como segue:
* gcc -I / usr / include / mysql .c -L / usr / lib / mysql -lmysqlclient -o *
Isso é para adicionar o caminho da biblioteca e biblioteca, a busca do caminho da biblioteca pode ser vista: veja a biblioteca mysql caminho
O código-fonte é o seguinte:
#include <iostream>
#include <string>
#include <mysql/mysql.h>
using namespace std;
class MysqlDB {
private:
MYSQL mysql;
MYSQL_ROW row;
MYSQL_RES *result;
MYSQL_FIELD *field;
public:
MysqlDB()
{
if( mysql_init( &mysql ) == NULL )
{
cout << "init error, line: " << __LINE__ << endl;
exit(-1);
}
}
~MysqlDB()
{
mysql_close( &mysql );
}
void connect( string host, string user, string passwd, string database )
{
if( !mysql_real_connect( &mysql, host.c_str(), user.c_str(), passwd.c_str(), database.c_str(), 0, NULL, 0 ) )
{
cout << "connect error, line: " << __LINE__ << endl;
exit(-1);
}
}
void add();
void print();
};
void MysqlDB::add()
{
string id, name, sex, birthday;
do {
cout << "请输入学生信息:\n";
cin >> id >> name >> sex >> birthday;
string sql = "insert into info values('" + id + "', '" + name +
"', '" + sex + "', '" + birthday + "');";
mysql_query( &mysql, sql.c_str() );
cout << "是否继续(y/n): ";
cin >> id;
} while( id == "y" );
}
void MysqlDB::print()
{
// string sql = "select * from info where name = '" + name + "';"; //要有''
string sql = "select * from info;";
mysql_query( &mysql, sql.c_str() );
result = mysql_store_result( &mysql );
if( !result )
{
cout << "result error, line : " << __LINE__ << endl;
return ;
}
int num = mysql_num_fields( result ); //返回字段个数
for( int i = 0; i < num; i++ ) {
field = mysql_fetch_field_direct( result, i ); //返回字段类型
cout << field->name << "\t\t"; //输出字段名
}
cout << endl;
while( row = mysql_fetch_row( result ), row )
{
for( int i = 0; i < num; i++ )
{
cout << row[i] << "\t\t";
}
cout << endl;
}
}
int main()
{
MysqlDB db;
db.connect( "localhost", "root", "root用户密码", "student" );
db.print();
db.add();
db.print();
return 0;
}
Devido à necessidade de usar uma senha, também tentei encontrar uma maneira de encontrar a senha do root. Existem muitos métodos na Internet. Vou listar um para ver a senha do usuário mysql.
Resultados da execução:
ver no banco de dados:
Link do blog: Use C ++ para operar mysql no Linux
Biblioteca oficial C API do mysql, consulte C API para mysql
As instruções relacionadas ao banco de dados podem ser vistas na instrução rookie tutorial-mysql