1. 程式人生 > >ubuntu環境中操作MySQL,使用C語言API呼叫MySQL

ubuntu環境中操作MySQL,使用C語言API呼叫MySQL

前言:最近準備做畢業設計,初次接觸到MySQL,做一個學習記錄

安裝MySQL:傻瓜式安裝

sudo apt-get install mysql-server
apt-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只要會套用就夠啦