C では、データベースを使用することもできます。今日は、C で MySQL データベースに接続して使用する方法を学びます。必要な友人はそれを参照できます。
1. C MySQL データベースへの接続
まず VS で新しい C プロジェクトを作成し、プロジェクト名を右クリックして [プロパティ] を選択します。
#プラットフォームの選択を選択 構成マネージャーを選択 新規を選択 ドロップダウン メニューから X64 を選択します。OK C/C を選択します ->一般 - > インクルード ディレクトリをアタッチし、C:\Program Files\MySQL\MySQL Server 5.5\include を追加します (独自のインストール ディレクトリに従って選択) #コネクタを選択します- > 一般 -> 追加のライブラリ ディレクトリ。 C:\Program Files\MySQL\MySQL Server 5.5\lib; を追加します (独自のインストール ディレクトリに応じて選択します) コネクタを選択 -> Enter -> 追加の依存関係アイテム。 C:\Program Files\MySQL\MySQL Server 5.5\lib\libmysql.lib; を追加します (独自のインストール ディレクトリに従って選択) 最後にダイナミック リンク ライブラリ libmysql を追加します。 .dll をプロジェクトの X64 ビルド ディレクトリにコピーします。ダイナミック リンク ライブラリ ファイルは、C:\Program Files\MySQL\MySQL Server 5.5\lib\ ディレクトリにあります 2. MySQL 共通 API 関数 mysql_affected_rows () 最新の UPDATE、DELETE、または INSERT クエリによって影響を受けた行の数を返します。 mysql_close() サーバー接続を閉じます。 mysql_connect() MySQL サーバーに接続します。この関数は非推奨であるため、代わりに mysql_real_connect() を使用してください。 mysql_change_user() 開いている接続でユーザーとデータベースを変更します。 mysql_create_db() データベースを作成します。この関数は推奨されません。代わりに SQL コマンド CREATE DATABASE を使用してください。 mysql_data_seek() クエリ結果セット内の任意の行を検索します。 mysql_debug() は、指定された文字列を使用して DBUG_PUSH を実行します。 mysql_drop_db() データベースを削除します。この関数は推奨されません。代わりに SQL コマンド DROP DATABASE を使用してください。 mysql_dump_debug_info() サーバーにデバッグ情報をログ ファイルに書き込ませます。 mysql_eof() 結果セットの最後の行が読み取られたかどうかを判断します。この機能は非推奨となっており、代わりに mysql_errno() または mysql_error() を使用できます。 mysql_errno() 最後に呼び出された MySQL 関数のエラー番号を返します。 mysql_error() は、最後に呼び出された MySQL 関数のエラー メッセージを返します。 mysql_escape_string() SQL ステートメントの文字列で使用される特殊文字をエスケープします。 mysql_fetch_field() は、次のテーブル フィールドのタイプを返します。 mysql_fetch_field_direct () フィールド番号を指定して、テーブル フィールドのタイプを返します。 mysql_fetch_fields() は、すべてのフィールド構造の配列を返します。 mysql_fetch_lengths() は、現在の行のすべての列の長さを返します。 mysql_fetch_row() 結果セットから次の行を取得します。 mysql_field_seek() 指定された列に列カーソルを置きます。 mysql_field_count() は、最新のクエリの結果列の数を返します。 mysql_field_tell() 最後の mysql_fetch_field() に使用されたフィールド カーソルの位置を返します。 mysql_free_result() は、結果セットによって使用されているメモリを解放します。 mysql_get_client_info() はクライアントのバージョン情報を返します。 mysql_get_host_info() は、接続を説明する文字列を返します。 mysql_get_proto_info() 接続で使用されるプロトコルのバージョンを返します。 mysql_get_server_info() はサーバーのバージョン番号を返します。 mysql_info() 最後に実行されたクエリに関する情報を返します。 mysql_init() MYSQL 構造を取得または初期化します。 mysql_insert_id() は、AUTO_INCREMENT カラムに対する前のクエリによって生成された ID を返します。 mysql_kill() 指定されたスレッドを強制終了します。 mysql_list_dbs() 単純な正規表現に一致するデータベース名を返します。 mysql_list_fields() 単純な正規表現に一致する列名を返します。 mysql_list_processes() は、現在のサーバー スレッドのテーブルを返します。mysql_list_tables() 単純な正規表現に一致するテーブル名を返します。
mysql_num_fields() 結果セット内の列の数を返します。
mysql_num_rows() 結果セット内の行数を返します。
mysql_options() mysql_connect() の接続オプションを設定します。
mysql_ping() サーバーへの接続が機能しているかどうかを確認し、必要に応じて再接続します。
mysql_query() NULL で終わる文字列として指定された SQL クエリを実行します。
mysql_real_connect() MySQL サーバーに接続します。
mysql_real_query() count を含む文字列として指定された SQL クエリを実行します。
mysql_reload() はサーバーに認可テーブルをリロードするように指示します。
mysql_row_seek() は、mysql_row_tell() から返された値を使用して、結果セット内の行を検索します。
mysql_row_tell() は行カーソルの位置を返します。
mysql_select_db() データベースに接続します。
mysql_shutdown() データベースサーバーをシャットダウンします。
mysql_stat() サーバーのステータスを文字列として返します。
mysql_store_result() は、完全な結果セットをクライアントに取得します。
mysql_thread_id() は現在のスレッドの ID を返します。
mysql_use_result() 行ごとの結果セットの取得を初期化します。
3. C MySQL データベースを使用します
サンプル プログラムを自分でダイジェストします。含まれている API がわからない場合は、Google で調べてください
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<windows.h> #include<winsock.h> #include<mysql.h> using namespace std; #pragma comment(lib,"libmysql.lib") #pragma comment(lib,"wsock32.lib") MYSQL *mysql = new MYSQL; //mysql连接 MYSQL_FIELD *fd; //字段列数组 char field[32][32]; //存字段名二维数组 MYSQL_RES *res; //这个结构代表返回行的一个查询结果集 MYSQL_ROW column; //一个行数据的类型安全(type-safe)的表示,表示数据行的列 char query[150]; //查询语句 bool ConnectDatabase(); bool QueryDatabase1(); //bool QueryDatabase2(); int main() { ConnectDatabase(); QueryDatabase1(); //QueryDatabase2(); system("pause"); return 0; } bool ConnectDatabase() { //初始化mysql mysql_init(mysql); //返回false则连接失败,返回true则连接成功 if (!(mysql_real_connect(mysql, "localhost", "root", "123456", "company", 0, NULL, 0))) //中间分别是主机,用户名,密码,数据库名,端口号(可以写默认0或者3306等),可以先写成参数再传进去 { printf("Error connecting to database:%s\n", mysql_error(mysql)); return false; } else { printf("Connected...\n"); return true; } return true; } bool QueryDatabase1() { sprintf_s(query, "select * from t_dept"); //执行查询语句,这里是查询所有,user是表名,不用加引号,用strcpy也可以 mysql_query(mysql, "set names gbk"); //设置编码格式(SET NAMES GBK也行),否则cmd下中文乱码 //返回0 查询成功,返回1查询失败 if (mysql_query(mysql, query)) //执行SQL语句 { printf("Query failed (%s)\n", mysql_error(mysql)); return false; } else { printf("query success\n"); } //获取结果集 if (!(res = mysql_store_result(mysql))) //获得sql语句结束后返回的结果集 { printf("Couldn't get result from %s\n", mysql_error(mysql)); return false; } //打印数据行数 printf("number of dataline returned: %d\n", mysql_affected_rows(mysql)); //获取字段的信息 char *str_field[32]; //定义一个字符串数组存储字段信息 for (int i = 0; iname; } for (int i = 0; i<p>関連学習の推奨事項: <a href="https://www.php.cn/course/list/51.html" target="_blank">mysql チュートリアル </a> (ビデオ)</p></mysql.h></winsock.h></windows.h></iostream>
以上がC++ で MySQL データベースに接続して使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。