C 言語は MySQL に接続し、SQL ステートメントを実行します (hello world)

1.新しいコンソールプロジェクトを作成します

参考 [VS2022 および VS2010 C 言語コンソール出力 Hello World] VS2022 および VS2010 C 言語コンソール出力 Hello World_vs2022 のソースファイルはどこですか_Xijin の no1 ブログ - CSDN ブログ

2.MySQLのインストール_

[ MySQL 8.0.34 インストール チュートリアル] MySQL 8.0.34 インストール チュートリアル_Xi Jin の no1 ブログ - CSDNブログを参照してください。

3. MySQLライブラリ ファイルをプロジェクト ファイルにコピーします

MySQL インストール フォルダーの下に include フォルダーと lib フォルダーが表示されます。include フォルダーと lib フォルダーおよびその中のすべてのファイルをプロジェクト フォルダー (demo.cpp は同じフォルダー内) にコピーし、lib フォルダーの下の libmysql.dll ファイルをプロジェクト フォルダー (同じフォルダー内に demo .cpp) にコピーします。フォルダ)。

このうち、include フォルダーにはヘッダー ファイル (メソッド宣言) が格納され、lib フォルダーには動的ライブラリと静的ライブラリ (ライブラリにパッケージ化されたメソッド実装) が格納されます。

4.次の内容で新しい「stdbool.h」ファイルを作成し、そのファイルをプロジェクト フォルダーにコピーします。

この手順の目的は、vs コンパイル エラー: Fatalerrorc1083: インクルード ファイルを開けません: "stdbool.h": no suchfileordirectory (コード スニペット) を解決することです。

「stdbool.h」ファイルの内容は次のとおりです。

/*
 * ISO C Standard:  7.16  Boolean type and values  <stdbool.h>
 */
 
#ifndef __STDBOOL_H__
#define __STDBOOL_H__
#define bool	int
#define true	1
#define false	0
#endif
/* __STDBOOL_H__ */

「stdbool.h」ファイルは、プロジェクトフォルダー内のインクルードフォルダーに配置されます。

5.呼び出しライブラリの設定

以下のすべての構成では、最初に MySQL ライブラリに対応するプラットフォーム win32 または x64 を選択する必要があることに注意してください。選択しないとエラーが発生します。

次のように:

エラー LNK2019: 関数 _main で参照されている未解決の外部シンボル _mysql_real_connect@32

エラー LNK2019: 関数 _main で参照されている未解決の外部シンボル _mysql_query@8

エラー LNK2019: 関数 _main で参照されている未解決の外部シンボル _mysql_init@4

エラー LNK2019: 解決できない外部シンボル _mysql_close@4. このシンボルが関数 _main で参照され、他のエラーが発生する場合、vs プロジェクトのビット数が MySQL ライブラリのビット数と一致しないことが原因です。

プロジェクトのプロパティを変更できます。プロジェクトのプロパティは 2 か所で変更する必要があります (対応するプラットフォームのライブラリ構成を同時に変更する必要があることに注意してください)。

(1) プロジェクトのプロパティ --> [構成プロパティ] --> [VC++ ディレクトリ] --> [インクルード ディレクトリ]: mysql ライブラリのヘッダー ファイルが配置されているディレクトリを選択します

プロジェクトフォルダー インクルードフォルダー

または

C:\Program Files\MySQL\MySQL Server 8.0\include

(2) プロジェクトのプロパティ --> [構成プロパティ] --> [VC++ ディレクトリ] --> [ライブラリ ディレクトリ]: mysql ライブラリの静的ライブラリが配置されているディレクトリを選択します

プロジェクトフォルダ libフォルダ

または

C:\Program Files\MySQL\MySQL Server 8.0\lib

(3) プロジェクトのプロパティ --> [構成プロパティ] --> [リンカー] --> [入力] --> [追加の依存関係]

libmysql.libを追加します。

6.サンプルコード1 - MySQLライブラリの設定と呼び出しが成功したかどうかを確認する

以下のコードで、demo.cpp の内容を上書きします。

#include <stdio.h>
#include <winsock.h>
#include <mysql.h>
int main()
{

	MYSQL*mysql=mysql_init(0);
	system("pause");
	return 0;
}

上記のコードは正常にコンパイルされ、構成が成功したことを示しています。正常に実行された場合は、MySQL ライブラリが正常に呼び出されたことを意味します。

 

7.サンプルコード2 - MySQLクライアントのバージョンを取得する

以下のコードで、demo.cpp の内容を上書きします。

#include <stdio.h>
#include <winsock.h>
#include <mysql.h>
int main()
{

	//获取客户端的版本信息
    printf("mysql client version:%s\n", mysql_get_client_info());
	system("pause");
	return 0;
}

8.サンプルコード3 - orderitemsテーブルのデータをクエリして出力します。

この例では、多くの前提条件が必要です: 1. データベース; 2. データベース内にテーブルがある; 3. テーブル内にデータがある; 4. データベースに対する読み取りおよび書き込み権限を持つユーザーなど。

#include <stdio.h>
#include <winsock.h>
#include <mysql.h>

const char host[] = "127.0.0.1";	// MySQL所在机器的ip
const int port = 0;					// MySQL所在机器的端口
const char db[] = "test";			// 数据库名
const char user[] = "root";			// 用户名
const char passwd[] = "test123";	// 用户密码

int main()
{
	//1、获取MySQL实例(相当于创建了一个MySQL句柄)
	MYSQL* ms = mysql_init(nullptr);

	//2、连接数据库
	if(mysql_real_connect(ms, host, user, passwd, db, port, nullptr, 0) == nullptr) {
		printf("数据库连接失败!\n");
		return 1;
	}
	printf("数据库连接成功!\n");
	mysql_set_character_set(ms, "utf8"); //设置编码格式为utf8

	//3、查询数据库表中的记录

	//a、执行查询语句
	char sql[] = "select * from orderitems;";
	if(mysql_query(ms, sql) != 0) {
		printf("查询数据失败!\n");
		return 2;
	}
	printf("查询数据成功!\n");
	//b、获取查询结果
	MYSQL_RES* res = mysql_store_result(ms);
	int rows = mysql_num_rows(res); //行数
	int cols = mysql_num_fields(res); //列数
	//获取每列的属性并打印列名
	MYSQL_FIELD* fields = mysql_fetch_fields(res);
	for(int i = 0;i < cols;i++) printf("%s\t", fields[i].name);
	printf("\n");

	for(int i = 0;i < rows;i++) {
		//获取一行数据并进行打印
		MYSQL_ROW row = mysql_fetch_row(res);
		for(int j = 0;j < cols;j++) {
			printf("%s\t", row[j]);
		}
		printf("\n");
	}
	
    mysql_free_result(res); // 释放内存空间

	//4、关闭数据库
	mysql_close(ms);
	printf("数据库关闭成功!\n");
	return 0;
}

末尾に記載: この記事では MySQL ライブラリの基本的な使い方のみを紹介しており、MySQL の C 言語インターフェースについてはあまり紹介しておりませんので、読者の皆様ご自身で展開して学習してください。

おすすめ

転載: blog.csdn.net/xijinno1/article/details/133238180