mysql c庫 示例 c語言查詢mysql示例

2021-10-20 01:34:13 字數 3583 閱讀 8694

1.安裝mysql-server,在ubuntu 10.04下安裝mysql-server-5.1,會自動安裝mysql-client_5.1sudo apt-get install mysql-server-5.1

2.c apis包含在mysqlclient庫檔案中與mysql的源**一塊發行,用於連線到資料庫和執行資料庫查詢,因此需要安裝libmysqlclient-dev

sudo apt-get install libmysqlclient-dev

標頭檔案在/usr/include/mysql目錄下;

庫檔案在/usr/lib/mysql和/usr/lib目錄下

3. 編譯:

gcc testdb.c -o test -i /usr/include/mysql -l /usr/lib -lmysqlclient

mysql *mysql_init(mysql *);

//這裡稱之為載入函式吧,返回的mysql指標要用到後續的函式中

int mysql_options(mysql *connection, enum option_to_set,const char *argument);

//設定mysql*的一些屬性,比如超時時間等

mysql *mysql_real_connect(mysql *connection,

const char *server_host,

const char *sql_user_name,

const char *sql_password,

const char *db_name,

unsigned int port_number,//置0連線預設埠,一般為3306

const char *unix_socket_name,//null

unsigned int flags);//無另外屬性時置0

//連線函式

void mysql_close(mysql *connection);

//關閉連線

unsigned int mysql_errno(mysql *connection);

//返回錯誤**

char *mysql_error(mysql *connection);

//返回錯誤資訊

int mysql_query(mysql *connection, const char *query);

//執行sql語句

my_ulonglong mysql_affected_rows(mysql *connection);

//返回執行語句過後受影響的行數,針對insert,update,delete

mysql_res *mysql_store_result(mysql *connection);

//返回執行結果,適用於資料量較小時,會返回到客戶端儲存

my_ulonglong mysql_num_rows(mysql_res *result);

//返回上面函式返回結果的行數

mysql_row mysql_fetch_row(mysql_res *result);

//抽取一條記錄,返回null時表示抽取完記錄或者錯誤

void mysql_data_seek(mysql_res *result, my_ulonglong offset);

//調整資料位置,offset為0時,下次呼叫mysql_fetch_row將返回result第一條記錄

mysql_row_offset mysql_row_tell(mysql_res *result);

//返回當前的位置

mysql_row_offset mysql_row_seek(mysql_res *result, mysql_row_offset offset);

//移動資料位置,並返回先前的位置,可以和上乙個函式結合使用

void mysql_free_result(mysql_res *result);

//釋放result空間

mysql_res *mysql_use_result(mysql *connection);

//返回執行結果,適用於資料量較大時,不返回到客戶端儲存

unsigned int mysql_field_count(mysql *connection);

//返回查詢結果中的列數(column數)

mysql_field *mysql_fetch_field(mysql_res *result);

//獲得查詢結果中的列名等資訊(表頭資訊)

#include

#include

#include

#include

int main(void) {

// mysql操作符

mysql *mysql;

// mysql結果集

mysql_res *mysql_res;

// mysql行操作符

mysql_row mysql_row;

char sqlcmd[200];

int r, t;

// 初始化

mysql = mysql_init(null);

if (!mysql) {

return exit_failure;

printf("%s\n", "init");

// 鏈結

mysql = mysql_real_connect(mysql, "127.0.0.1", "root", "root", "test", 0, null, 0);

if (!mysql) {

return exit_failure;

printf("%s\n", "connect");

mysql_set_character_set(mysql, "utf8");

// 執行查詢

sprintf(sqlcmd, "%s", "select id,name from user");

r = mysql_real_query(mysql, sqlcmd, strlen(sqlcmd));

if (r) {

// 結束

mysql_close(mysql);

return exit_failure;

printf("%s\n", "begin to query");

mysql_res = mysql_store_result(mysql);

if (!mysql_res) {

// 結束

mysql_close(mysql);

return exit_failure;

while((mysql_row = mysql_fetch_row(mysql_res))) {

for (t = 0; t < mysql_num_fields(mysql_res); t++) {

printf("%s,", mysql_row[t]);

printf("\n");

// 釋放

mysql_free_result(mysql_res);

printf("%s\n", "query finish");

// 結束

mysql_close(mysql);

return exit_success;

c語言寫入mysql C語言寫資料庫(三)

遇到的問題以及解決思路方法 1.外部匯入資料庫檔案 進入mysql,建立資料庫sh robot source home exbot sh robot.sql 檢視資料庫編碼格式 show variables like char 2.資料庫插入操作 查詢存在該錶是否存在 show tables 不存在...

c 讀取mysql c語言讀取Mysql

最近一段時間學習linux下的c開發,呵呵,寫了乙個測試程式,作用是讀取mysql的資料,然後顯示出來。經測試成功 include include include define db server define db name test define db user root define db p...

c 操作mysql c 操作mysql資料庫

using mysql.data.mysqlclient 2 建立mysqlconnection物件 鏈結庫 string connstr data source localhost database cs test user id root password 123456 pooling fals...