ubuntu環境中操作MySQL,使用C語言API呼叫MySQL
阿新 • • 發佈:2019-01-06
前言:最近準備做畢業設計,初次接觸到MySQL,做一個學習記錄
安裝MySQL:傻瓜式安裝
sudo apt-get install mysql-serverapt-get install libmysqlclient-dev這個記得要裝,不然程式設計的時候找不到mysql.h檔案
操作MySQL
1.開啟終端,準備登入 mysql -h 127.0.0.1 -u root -p//root為使用者名稱 127.0.0.1為主機名,即允許用什麼IP登入,這些都是在建立使用者的時候就寫好的 2..建立新的使用者 create user '使用者名稱'@'登入IP' identified by '密碼'例如:create user 'zouwm'@'127.0.0.1' identified by '123456' 3.使用者授權 grant 權利 on databasename.tablename to 使用者 例如:grant all on *.* to zouwm *.*代表所有資料庫的所有表 4.建立資料庫 create database 資料庫例如:create database test 5.建立表 首先指定資料庫use 資料庫例如:use test 建立表 create table S_RESIDENCE(USER_ID VARCHAR(20) NOT NULL,
PHONE VARCHAR(20),
NAME VARCHAR(30),
VILLAGE_NAME VARCHAR(100),
VILLAGE_ID VARCHAR(20) NOT NULL,
RESIDENCE_ADDR VARCHAR(200),
STATE CHAR(1),
PRIMARY KEY(USER_ID)
);
C語言操作MySQL
Mysql API資料結構
MYSQL
連線資料庫前,必須先建立MYSQL變數,此變數在很多Mysql API函式會用到。它包含了一些連線資訊等資料。
MYSQL_RES
MYSQL_RES結構體中包含了查詢結果集,也就是從資料庫中查詢到的資料。可以使用mysql_store_result或mysql_use_result函式獲得。
MYSQL_ROW
MYSQL ROW的定義如下:
typedef char **MYSQL_ROW;
可見,它實際上是char **型別,指向一個字串陣列。可以通過mysql_fetch_row函式獲得。
MYSQL_FIELD
MYSQL_FIELD中包含了欄位名、欄位型別和大小等資訊。可以重複呼叫mysql_fetch_field函式獲得所有欄位的資訊。
注意:Linux下的MySQL的表明是區分大小寫的
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<mysql.h> #define MAX_COLUMN_LEN 32 int main(int argc , char *argv[]) { MYSQL db; MYSQL_RES *res; MYSQL_ROW row; //初始化資料庫 mysql_init(&db); //連線資料庫 if(mysql_real_connect(&db,"127.0.0.1","zouwm","z123","intelligence",3306,NULL,0)) { printf("connect!!!\n"); } //查詢 if (mysql_real_query(&db, "select * from S_RESIDENCE", (unsigned long)strlen("select * from S_RESIDENCE"))) { printf("mysql_real_query failed\n"); return 0; } // 儲存結果集 res = mysql_store_result(&db); if (NULL == res) { printf("mysql_store_result failed\n"); return 0; } // 重複讀取行,並輸出第一個欄位的值,直到row為NULL while (row = mysql_fetch_row(res)) { printf("%s\n",row[0]); } // 釋放結果集 mysql_free_result(res); // 關閉Mysql連線 mysql_close(&db); return 0; }
編譯連線選項 gcc -I/usr/include/mysql test.c -o demo -L/usr/lib/mysql -lmysqlclient
我認為sql主要還是懂sql語句,至於這些API只要會套用就夠啦