今日は、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ステートメントで見ることができます