日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

c语言如何编写mysql客户端_【C/C++学院】(23)Mysql数据库编程--C语言编程实现mysql客户端...

發布時間:2023/12/10 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言如何编写mysql客户端_【C/C++学院】(23)Mysql数据库编程--C语言编程实现mysql客户端... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#include

#include

#include

#include

#include

#include

#include

#include "mydb.h"

void sqldb(const char *src)//參數src為要執行的SQL語句

{

if ((strncmp(src, "select", 6) == 0) || (strncmp(src, "SELECT", 6) == 0)

|| (strncmp(src, "show", 4) == 0) || (strncmp(src, "SHOW", 4) == 0)

|| (strncmp(src, "desc", 4) == 0) || (strncmp(src, "DESC", 4) == 0))

{

open_db(src);//如果src為有返回數據集SQL語句,那么調用open_db函數

} else

{

exec_db(src);//如果src為沒有有返回數據集SQL語句,那么調用exec_db函數

}

}

void work(const char *userid, const char *password)

{

init_db();

if (conn_db("localhost", userid, password, "test") != 0)//連接到數據庫

{

return;//連接數據庫失敗,函數退出

}

char buf[2048];

while (1)//循環從鍵盤讀取

{

write(STDOUT_FILENO, "mysql1>", strlen("mysql1>"));//屏幕輸出命令提示符mysql1>

memset(buf, 0, sizeof(buf));

read(STDIN_FILENO, buf, sizeof(buf));//等待用戶從鍵盤輸入

if (strncmp(buf, "quit", 4) == 0)

break;//用戶輸入quit,循環break;

sqldb(buf);

}

disconn_db();//斷開數據庫連接

}

struct termios oldterm;

void setstty()//設置輸入退格鍵,不回顯

{

//system("stty erase ^H");//執行shell命令,也可以 用來設置讀取用戶鍵盤輸入的時候,退格鍵不回顯

struct termios term;

if(tcgetattr(STDIN_FILENO, &term) == -1)//得到系統termion的設置

{

printf("tcgetattr error is %s\n", strerror(errno));

return;

}

oldterm = term;//保留當前termios設置,以便程序退出的時候可以恢復termios

/* term.c_lflag &= ~ICANON;//取消ICANON選項(不規范輸入) term.c_lflag |= ICANON;//設置ICANON選項(規范輸入) term.c_cc字段為要設置的具體特殊輸入字符,如c_cc[VERASE]代表退格鍵, term.c_cc[VERASE] = '\b';意思為把退格鍵修改為'\b' VERASE代表向前擦出一個字符,VINTR代表發送ctrl + C中斷信號,ctrl + c的ASCII碼為3 例如:term.c_cc[VINTR] = '\t';意思為將tab鍵設置為終端信號 tcsetattr中,第二個參數說明,TCSAFLUSH:發送了所有輸出后更改才生效,在更改發生時,未讀取的所有輸入數據都被刪除 TCSANOW:更改立即生效 TCSADRAIN:發送了所有輸出后更改才發生,如果更改輸出參數則應該使用該選項 */

term.c_cc[VERASE] = '\b';//'\b'為退格鍵的ASCII碼

if (tcsetattr(STDIN_FILENO, TCSANOW, &term) == -1)//設置系統termion

{

printf("tcsetattr error is %s\n", strerror(errno));

}

return;

}

void returnstty()//恢復系統的termios設置

{

if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &oldterm) == -1)//設置系統termion

{

printf("tcsetattr error is %s\n", strerror(errno));

}

return;

}

int main(int arg, char *args[])

{

if (arg < 4)//如果沒有參數,main函數退出

{

return EXIT_FAILURE;

}

if (strncmp(args[1], "-u", 2) != 0)//如果第二個參數不是-u,main函數退出

{

return EXIT_FAILURE;

}

if (strncmp(args[3], "-p", 2) != 0)//如果第四個參數不是-p,main函數退出

{

return EXIT_FAILURE;

}

const char *passwd = getpass("please input password:");//輸入密碼,屏幕不回顯

setstty();//設置輸入退格鍵,不回顯

work(args[2], passwd);

returnstty();//恢復系統的termios設置

return EXIT_SUCCESS;

}

總結

以上是生活随笔為你收集整理的c语言如何编写mysql客户端_【C/C++学院】(23)Mysql数据库编程--C语言编程实现mysql客户端...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。