C++ を使用してデータベースに接続するには、データベースをローカルにインストールするか、データベースが配置されているホストの IP アドレスを取得する必要があります。最初に、mysql8.0 64 ビット データベースを使用しており、vs は vs2019 であることを説明させてください。
1. 環境を構成する
最初にvs2019を開き、空のプロジェクトを作成し、下図に示す位置を右クリックして、一番下のプロパティを見つけ、クリックして入力します
以下のページに移動し、VC++ ディレクトリをクリックし、コンピュータ ファイル C ディスクで Program Files を見つけ、MySQL を見つけ、MySQL Server 8.0 を見つけ、インクルード フォルダに入り、ファイル アドレス C:\Program Files\MySQL\MySQL Server を入力します。 8.0\include 以下の図の位置 2 にコピーし、前のレベルに戻ってフォルダ lib に入り、ファイル アドレス C:\Program Files\MySQL\MySQL Server 8.0\lib を下の図 3 の位置にコピーします。 .
リンカーを開き、Enter をクリックし、Additional Dependencies をクリックして、フォルダー内の lib フォルダーに移動します。
libmysql.lib を見つける
libmysql.lib の名前を以下に示す場所にコピーします。
最後に適用をクリックします。
次に lib フォルダに入り、下図の libmysql.lib を C ドライブの C:\Windows\System32 にコピーします。
2. c言語リンクデータベース
コード表示
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<mysql.h>//数据库包含的头文件
#include<time.h>
int main()
{
//固定不变的
MYSQL mysql; //一个数据库结构体
MYSQL_RES* res; //一个结果集结构体
MYSQL_ROW row; //char** 二维数据,存放一条条记录
//初始化数据库
mysql_init(&mysql);
//设置编码方式
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");
//连接数据库
if (mysql_real_connect(&mysql, "ip地址", "数据库的用户名 ", "数据库密码", "使用的数据库名", 3306, NULL, 0) == NULL)
{
printf("错误原因:%s\n", mysql_error(&mysql));
printf("连接失败\n");
exit(-1);
}
char* str1 = "insert into rand values(";//这里使用的表是事先创建好的
char sql_insert[200];
sprintf(sql_insert, "%s%d,'%s','%s',%d%s", str1, 3, "xiaoli", "1234a", 3, ")");//批量插入数据
mysql_query(&mysql, sql_insert);
//查询数据
mysql_query(&mysql, "select * from rand");
//获取结果集
res = mysql_store_result(&mysql);
//给ROW赋值,判断ROW是否为空,不为空就打印数据
while (row = mysql_fetch_row(res))
{
printf("%s \n", row[0]);
}
//释放结果集
mysql_free_result(res);
//关闭数据库
mysql_close(&mysql);
//停留等待
system("pause");
return 0;
}
3. クラス紹介
1. MYSQL ハンドル クラス
1. MYSQL の mysql; |
これは、すべてのデータベース操作に必要なデータベース ハンドル クラスです。
2.MYSQL_RES
2.MYSQL_RES* レス; |
これはクエリ結果セットで、データベースにクエリを実行した後に値を格納するために使用されます
3.MYSQL_ROW
2.MYSQL_ROW行 |
これは本質的にクラスではなく、本質的に文字列配列へのポインター、つまり二次ポインター char** と同等です。このステートメントの機能は、MYSQL_RES クエリ結果セットの内部使用を 1 行ずつ読み取ることです。テーブル内の列は、2 次ポインターに相当する要素であり、テーブル内の列と同じ数のポインターがいくつかあります。
ブログを書くのはこれが初めてで、間違いがあります。皆さんに訂正していただければ幸いです。