C語言簡單操作MYSQL資料庫的增刪查詢
阿新 • • 發佈:2019-02-12
#include<stdio.h> #include<mysql.h> //所需標頭檔案 #include<string.h> #include<stdlib.h> MYSQL *conn_prt; //創造一個MYSQL控制代碼 MYSQL_RES *res; MYSQL_ROW row; /*一些操作的命令起始部分*/ char select_head[50] = "select * from "; char desc_head[50] = "desc "; char insert_head[200] = "insert into "; char drop_msg_head[50] = "delete from "; char change_base_head[50] = "use "; /*初始化mysql控制代碼*/ void self_init() { conn_prt = mysql_init(NULL); } /*連線mysql資料庫*/ void self_connect() { /*假設我的雲伺服器IP為118.89.20.60,密碼為123456,進入的資料庫名字為zje*/ if(!mysql_real_connect(conn_prt,"118.89.20.60","root", "123456","zje",0,NULL,0)) { printf("failed to connect:%s\n",mysql_error(conn_prt)); exit(0) ; } printf("connect success!\n"); /*如果本機測試的話,上面的語句可改為*/ /* printf("本機測試\n"); if(!mysql_real_connect(conn_prt,"localhost","root", "123456","zje",0,NULL,0)) { printf("failed to connect:%s\n",mysql_error(conn_prt)); exit(0) ; } printf("connect success!\n"); */ } /*列印某個資料庫中的某個表*/ void print_table() { int t; char table_name[50]; char query[50]; bzero(query,50); bzero(table_name,50); strcpy(query,select_head); puts("please enter table name:"); scanf("%s",table_name); strcat(query,table_name); t = mysql_real_query(conn_prt,query,strlen(query)); if(t) { printf("failed to query:%s\n",mysql_error(conn_prt)); return ; } printf("query success!\n"); res = mysql_store_result(conn_prt); while(row = mysql_fetch_row(res)) { for(t = 0;t<mysql_num_fields(res);t++) { printf("%s\t",row[t]); } printf("\n"); } return ; } /*列印某個表的欄位有哪些*/ void desc_table() { int t; char table_name[50]; char desc_query[50]; bzero(table_name,50); bzero(desc_query,50); strcpy(desc_query,desc_head); puts("please enter the table name:"); scanf("%s",table_name); strcat(desc_query,table_name); t = mysql_real_query(conn_prt,desc_query,strlen(desc_query)); if(t) { printf("failed to query:%s\n",mysql_error(conn_prt)); return ; } res = mysql_store_result(conn_prt); while(row = mysql_fetch_row(res)) { for(t = 0;t<mysql_num_fields(res);t++) { printf("%s\t",row[t]); } printf("\n"); } return ; } /*往某個表中插入資料*/ void insert_msg() { int t; char insert_query[200]; char table_name[50]; char field[100]; char left[5]="("; char right[5]=") "; char values[50]="values"; char message[200]={0}; bzero(field,100); bzero(table_name,50); bzero(message,200); strcpy(insert_query,insert_head); //insert into puts("please enter table_name:"); scanf("%s",table_name); puts("please enter the Field you want to write:(以逗號分隔)"); scanf("%s",field); puts("please write the message to the field:(以逗號分隔)"); scanf("%s",message); /*把幾個變數字串連線成一個完整的mysql命令*/ strcat(insert_query,table_name); strcat(insert_query,left); strcat(insert_query,field); strcat(insert_query,right); strcat(insert_query,values); strcat(insert_query,left); strcat(insert_query,message); strcat(insert_query,right); printf("%s\n",insert_query); t = mysql_real_query(conn_prt,insert_query,strlen(insert_query)); if(t) { printf("failed to query:%s\n",mysql_error(conn_prt)); return ; } printf("OK\n"); } /*刪除某個表中的某個資料,以名字為基準*/ void drop_msg_table() { int t; char drop_query[200]={0}; char table_name[20]={0}; char del_name[20]={0}; strcpy(drop_query,drop_msg_head); puts("please enter the table:"); scanf("%s",table_name); puts("please enter del name:"); scanf("%s",del_name); strcat(drop_query,table_name); strcat(drop_query," where name =\""); strcat(drop_query,del_name); strcat(drop_query,"\""); printf("%s\n",drop_query); t = mysql_real_query(conn_prt,drop_query,strlen(drop_query)); if(t) { printf("failed to query:%s\n",mysql_error(conn_prt)); return ; } printf("OK\n"); return ; } /*改變身處的資料庫*/ void change_base() { int t; char change_based_query[100]={0}; char base_name[20]={0}; strcpy(change_based_query,change_base_head); puts("please enter the base name you want to change:"); scanf("%s",base_name); strcat(change_based_query,base_name); t = mysql_real_query(conn_prt,change_based_query,strlen(change_based_query)); if(t) { printf("failed to query:%s\n",mysql_error(conn_prt)); return ; } printf("OK\n"); return ; } /*列印某個資料庫中有哪些表*/ void show_all_tables() { int t; char query[50] ="show tables"; t = mysql_real_query(conn_prt,query,strlen(query)); if(t) { printf("failed to query:%s\n",mysql_error(conn_prt)); return ; } res = mysql_store_result(conn_prt); while(row = mysql_fetch_row(res)) { for(t = 0;t<mysql_num_fields(res);t++) { printf("%s\t",row[t]); } printf("\n"); } return ; } /*列印存在的所有資料庫*/ void show_all_bases() { int t; char query[50] ="show databases"; t = mysql_real_query(conn_prt,query,strlen(query)); if(t) { printf("failed to query:%s\n",mysql_error(conn_prt)); return ; } res = mysql_store_result(conn_prt); while(row = mysql_fetch_row(res)) { for(t = 0;t<mysql_num_fields(res);t++) { printf("%s\t",row[t]); } printf("\n"); } return ; } char dir[200] ={" \ \t1.打印表 \ \t2.查詢某個表的格式 \ \t3.往某個表插入資料\n \ \t4.刪除某表的某一資料 \ \t5.選擇另外一個數據庫 \ \t\n6.顯示所有表 \ \t 7.顯示所有資料庫 \ "}; int main() { self_init(); self_connect(); printf("%s\n",dir); int type; while(1) { puts("please choice option:"); scanf("%d",&type); switch(type) { case 1:print_table();break; case 2:desc_table();break; case 3:insert_msg();break; case 4:drop_msg_table();break; case 5:change_base();break; case 6:show_all_tables();break; case 7:show_all_bases();break; } } return 0; }