C ++を使用してデータベースに接続し、関連する操作を実装します

今日は、C ++を使用してLinuxでmysqlに接続する方法を学び、いくつかの簡単な操作を実現したいと思います。私は多くの落とし穴を踏みました。
1つ目はmysqlの環境問題で、以前は使用できましたが、突然エラーが報告されました。
ソケット「/var/run/mysqld/mysqld.sock」(2)を介してローカルMySQLサーバーに接続できません。」

その後、設定ファイルの変更、mysql-client、mysql-server、mysql-devのダウンロードと更新など、インターネット上で多くの回答を検索しましたが、久しぶりに結果が得られなかったので、ただMySQLを削除し、それを再インストールの詳細を参照してください。削除したMySQLを冷却する方法理由を超えているORZものを私に伝えるために兄をしたい私は、MySQLサービスばかりのマシンを開くことができませんでしたので、神は枯れ、見つかりました( - _-)。私はそれを知る前にこのエラー解決策を見ました。

言うまでもなく、それは本当にクールです。その後、再インストールします。インターネットにアクセスして、インストールのリンクを検索できます。バグはそれほど多くありません。

次に、トピックを入力します。C++を使用してデータベースを操作する場合は、最初にmysqlでデータベースとテーブルを作成できます。そうしないと、接続されません。ここで作成したテーブルは
ここに画像の説明を挿入します
次のようになります。次に、mysql /mysql.hヘッダーファイルをC ++でインポートし、内部の関数を使用してデータベースにアクセスします。コードを記述した後、g ++で直接コンパイルすると、エラーが報告されます
。mysql.h:そのようなファイルまたはディレクトリはありません

このエラーは、システムにmysql開発ライブラリがインストールされていないために発生します。
次のコマンドを実行して
sudo apt-get install libmysql +±devをインストールし
ますコンパイルに、接続-lmysqlclientを追加する必要があります。
ソースコードをコンパイルする時間は次のとおりです。次のようになります。
* gcc -I / usr / include / mysql .c -L / usr / lib / mysql -lmysqlclient -o *
つまり、ライブラリパスとライブラリを追加すると、ライブラリパスの検索が表示されます。mysqlライブラリを表示します。道

ソースコードは次のとおりです。

#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;
}

パスワードを使用する必要があるため、ルートパスワードを見つける方法も見つけようとしました。インターネットには多くの方法があります。mysqlユーザーパスワード表示する方法を1つリストします。
実行結果:
ここに画像の説明を挿入します
データベースで表示:
ここに画像の説明を挿入します

ブログリンク:Linuxでmysqlを操作するにはC ++を使用します

mysqlの公式CAPIライブラリはmysqlのCAPIを参照してください

データベース関連のステートメントは、新人チュートリアル-mysqlステートメントで見ることができます

おすすめ

転載: blog.csdn.net/weixin_45146520/article/details/109165849