C言語操作mysql


mysqlをインストールすると、mysqlの下にincludeディレクトリとlibディレクトリが生成され、includeディレクトリにはヘッダファイルが格納され、libにはダイナミックリンクライブラリがあり、include/下のmysqlが格納.h/usr/includeにコピーし、lib/下のlibmysqlclient.soとlibmysqlclient.so.18/usr/lib 64にコピーする、作成プログラムにmysqlを含める必要がある.hヘッダファイル、リンク時-lmysqlclient
ソースコードはconnectです.c、ここではすべてのヘッダファイルを/usr/include/mysqlファイルの下に配置します.原理は簡単です.まずハンドルを初期化し、接続関数を呼び出し、ユーザー名とパスワードを入力します.ここでは「wz」というデータベースと「wz」というテーブルと接続を確立し、次のようにすべてのデータをクエリーします.

#include 
#include 
#include 

void main()
{
    MYSQL mysql;
    MYSQL_RES *res = NULL;
    MYSQL_ROW row;
    char *query_str = NULL;
    int rc, i, fields;
    int rows;

    /*       */
    if (NULL == mysql_init(&mysql))
    {
        printf("mysql_init() : %s
", mysql_error(&mysql)); return; } /* */ if (NULL == mysql_real_connect(&mysql, "localhost", "root", "123456", "wz", 0, NULL, 0)) { printf("mysql_real_connect() : %s
", mysql_error(&mysql)); return; } printf("connect mysql successful
"); /* uft8 */ if (mysql_set_character_set(&mysql, "utf8")) { printf("mysql_set_character_set(): %s
", mysql_error(&mysql)); return; } /* */ query_str = "select * from wz"; rc = mysql_real_query(&mysql, query_str, strlen(query_str)); if (rc != 0) { printf("mysql_real_query() : %s
", mysql_error(&mysql)); return; } /* */ res = mysql_store_result(&mysql); if (NULL == res) { printf("mysql_store_result(): %s
", error(&mysql)); return; } /* */ rows = mysql_num_rows(res); printf("The total rows is: %d
", rows); fields = mysql_num_fields(res); printf("The total fields is: %d
", fields); /* */ while ((row = mysql_fetch_row(res))) { for (i = 0; i < fields; i++) { printf("%s
", row[i]); } printf("
"); } /* */ mysql_close(&mysql); }

実行効果は次のとおりです.
[root@1dot1dot1dot1 mysql]# ./start.sh 
connect mysql successful
The total rows is: 3
The total fields is: 4
1
  
edward
2018-09-13

9
  
edward
2018-09-14

12
  
james
2018-09-14

コマンドラインで直接クエリーした結果は次のとおりです.
mysql> select * from wz;
+----+--------+--------+------------+
| id | title  | author | date       |
+----+--------+--------+------------+
|  1 |      | edward | 2018-09-13 |
|  9 |      | edward | 2018-09-14 |
| 12 |      | james  | 2018-09-14 |
+----+--------+--------+------------+
3 rows in set (0.02 sec)

削除の追加などの操作は似ていますが、apiを呼び出せばいいです.