Use C ++ para se conectar ao banco de dados e implementar operações relacionadas

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
Insira a descrição da imagem aqui
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:
Insira a descrição da imagem aqui
ver no banco de dados:
Insira a descrição da imagem aqui

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

Acho que você gosta

Origin blog.csdn.net/weixin_45146520/article/details/109165849
Recomendado
Clasificación