C語言呼叫mysql資料庫API實現簡單的mysql客戶端的功能
輸入可執行程式的名字和資料庫的名字進入該程式,比如 ./mysql_test3 ch11
(ch11是資料庫的名字)
下面是輸入命令的輸出結果:
mysql_init ok...
mysql_real_connect ok...
mysql> show tables;
-------------------------------------------------------------
Tables_in_ch11
---------------------------------------------------------------
food
medicine
product
t
t1
t2
teacher
mysql> create table tttttt(id int, name varchar(20));
create ok
mysql> show tables;
-------------------------------------------------------------
Tables_in_ch11
---------------------------------------------------------------
food
medicine
product
t
t1
t2
teacher
tttttt
mysql> desc tttttt;
-------------------------------------------------------------
Field Type Null Key Default Extra
---------------------------------------------------------------
id int(11) YES (null)
name varchar(20) YES (null)
mysql> insert into tttttt values(1, "linux_ever");
mysql> select * from tttttt;
-------------------------------------------------------------
id name
---------------------------------------------------------------
1 linux_ever
mysql> drop table tttttt;
drop ok
mysql> show tables;
-------------------------------------------------------------
Tables_in_ch11
---------------------------------------------------------------
food
medicine
product
t
t1
t2
teacher
mysql> quit
mysql_close...
上面的命令有:show, create, desc, insert, select, drop, quit
show tables;
create table tttttt(id int, name varchar(20));
desc tttttt;
insert into tttttt values(1, "linux_ever");
select * from tttttt;
drop table tttttt;
quit;
程式的原始碼參考部落格:http://blog.csdn.net/linux_ever/article/details/50651513
呼叫的主要mysql資料庫的API函式:
mysql_init(&mysql);
mysql_errno(&mysql);
mysql_real_connect(connect, "localhost", "root", "yxk", database_name, 0, NULL, 0);
mysql_query(&mysql, "set names utf8");
mysql_query(connect, query);
mysql_store_result(&mysql);
mysql_field_count(&mysql);//獲得表的列數
mysql_fetch_fields(result);//查詢表頭
mysql_fetch_row(result);//查詢表內容
mysql_free_result(result);//釋放記憶體
mysql_close(connect);//關閉連線
原始碼:
/*************************************************************************
> File Name:mysql_test.c
> Author:
> Mail:
> Created Time: 2016年02月11日 星期四 10時45分31秒
************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>
char database_name[1024];
char query[1024];
int main(int argc, char *argv[])
{
if(argc <= 1){
printf("input: %s database_name\n", argv[0]);
return -1;
}
strcpy(database_name, argv[1]);
int ret = 0;
MYSQL mysql;
MYSQL * connect = NULL;
connect = mysql_init(&mysql);
if(connect == NULL){
ret = mysql_errno(&mysql);
printf("mysql_init error, %s\n", mysql_error(&mysql));
return ret;
}
printf("mysql_init ok...\n");
connect = mysql_real_connect(connect, "localhost", "root", "yxk", database_name, 0, NULL, 0);
if(connect == NULL){
ret = mysql_errno(&mysql);
printf("mysql_real_connect error, err is: %s\n", mysql_error(&mysql));
return ret;
}
printf("mysql_real_connect ok...\n");
char * pch = NULL;
while(1){
memset(query, 0, sizeof(query));
printf("mysql> ");
gets(query);
pch = strchr(query, ';');//將最後的分號;換為\0
if(pch != NULL){
*pch = '\0';
}
if(strcmp("quit", query) == 0){//如果輸入的是quit則退出程式
break;
}
//設定查詢字符集屬性為utf8
ret = mysql_query(&mysql, "set names utf8");
if(ret != 0){
printf("mysql_query error\n");
return ret;
}
//執行下面的命令, select, show, desc
if((strncmp(query, "select", 6) == 0) || (strncmp(query, "SELECT", 6) == 0) ||
(strncmp(query, "show", 4) == 0) || (strncmp(query, "SHOW", 4) == 0) ||
(strncmp(query, "desc", 4) == 0) || (strncmp(query, "DESC", 4) == 0)){
//查詢資料
ret = mysql_query(connect, query);
if(ret != 0){
printf("mysql_query error\n");
//return ret;
continue;
}
MYSQL_RES *result = mysql_store_result(&mysql);
if(result == NULL){
printf("mysql_store_result error\n");
return -1;
}
int field_num = mysql_field_count(&mysql);
//查詢表頭
MYSQL_FIELD * fields = mysql_fetch_fields(result);
int i = 0;
printf("-------------------------------------------------------------\n");
for(i= 0; i < field_num; i++){
printf("%s \t", fields[i].name);
}
printf("\n---------------------------------------------------------------\n");
//查詢表內容
MYSQL_ROW row = NULL;
while(row = mysql_fetch_row(result)){
for(i= 0; i < field_num; i++){
printf("%s \t", row[i]);
}
printf("\n");
}
mysql_free_result(result);//釋放記憶體
}
else {//執行drop, create, insert等命令
ret = mysql_query(connect, query);
if(ret != 0){
printf("mysql_query error\n");
//return ret;
continue;
}
if(strncmp(query, "drop", 4)==0 || strncmp(query, "DROP", 4)==0){
printf("drop ok\n");
}
else if(strncmp(query, "create", 6)==0 || strncmp(query, "CREATE", 6)==0){
printf("create ok\n");
}
else if(strncmp(query, "insert", 6)==0 || strncmp(query, "INSERT", 6)==0){
printf("insert ok\n");
}
}
}
mysql_close(connect);
printf("mysql_close...\n");
return ret;
}
相關文章
- 【C/C++學院】(23)Mysql資料庫程式設計–C語言程式設計實現mysql客戶端C++MySql資料庫程式設計C語言客戶端
- C語言透過socket實現TCP客戶端C語言TCP客戶端
- 利用tirpc庫實現簡單的客戶端和服務端RPC客戶端服務端
- FTP客戶端c程式碼功能實現FTP客戶端C程式
- C# 客戶端程式呼叫外部程式的三種實現C#客戶端
- linux下使用mysql的C語言APILinuxMySqlC語言API
- 一個簡單易用的資料庫客戶端ajfdbviewer1.0資料庫客戶端View
- Redis C客戶端APIRedis客戶端API
- 技術分享 | MySQL Binlog 通過 MySQL 客戶端匯入資料庫效率低的原因MySql客戶端資料庫
- 實現服務端和客戶端的實時雙向資料傳輸-WebSocket簡單瞭解服務端客戶端Web
- jQuery實現客戶端CheckAll功能jQuery客戶端
- Go 實現簡易的 Redis 客戶端GoRedis客戶端
- Swoole 協程 MySQL 客戶端與非同步回撥 MySQL 客戶端的對比MySql客戶端非同步
- pycurl實現hadoop的客戶端功能薦Hadoop客戶端
- MySQL資料庫的基本使用簡單易懂MySql資料庫
- php簡單操作mysql資料庫的類PHPMySql資料庫
- 百度翻譯API的C#客戶端實現過程APIC#客戶端
- 帶你實現一個簡單的MYSQL資料庫生成實體類工具MySql資料庫
- MySQL 客戶端安裝MySql客戶端
- 如何用Java Socket實現一個簡單的Redis客戶端JavaRedis客戶端
- R語言連線資料庫(MySQL)R語言資料庫MySql
- 雲時代的資料庫客戶端 —— CloudQuery最佳實踐資料庫客戶端Cloud
- 客戶端連線資料庫的方法客戶端資料庫
- 簡單實用的FTP客戶端:Viper FTP for MacFTP客戶端Mac
- github客戶端fork的簡單教程Github客戶端
- Mysql資料庫的簡單備份指令碼MySql資料庫指令碼
- ping工具的C語言簡單實現 (ICMP echo)C語言
- 使用OAuth保護REST API並使用簡單的Angular客戶端OAuthRESTAPIAngular客戶端
- TCP通訊客戶端和服務端簡單程式碼實現TCP客戶端服務端
- go語言實現TLS雙向認證的客戶端 程式碼例子GoTLS客戶端
- 資料庫的最簡單實現資料庫
- 基於c語言的TCP客戶端、服務端基礎程式碼C語言TCP客戶端服務端
- c#實現redis客戶端(一)C#Redis客戶端
- C語言連線mysql資料庫查詢中文的資料表亂碼問題C語言MySql資料庫
- C#操作登錄檔簡單教程(附帶操作某資料庫客戶端登錄檔以實現重置試用期的效果)C#資料庫客戶端
- windows socket簡單使用--實現客戶端連結服務端併傳送和接收資料Windows客戶端服務端
- C語言實現的一個簡單的猜數小遊戲C語言遊戲
- CouchBase C 客戶端介面呼叫例項客戶端