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客户端...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2499元抢到赚到 雷军体验Redmi
- 下一篇: 直击部分省份高考结束:考生飞奔 家长送花