第一个mysql程序
还是开始学习mysql啦
代码:
c_mysql.c
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <mysql.h> 4 #include <string.h> 5 6 MYSQL* m_pMyData; 7 8 void showTable(); 9 10 int main() 11 { 12 //printf("start\n"); 13 14 char g_dbName[30]; 15 char g_strIP[30]; 16 char g_strUser[30]; 17 char g_strPasswd[30]; 18 int g_nPort = 3306; 19 20 strcpy(g_dbName,"chat"); 21 strcpy(g_strIP,"localhost"); 22 strcpy(g_strUser,"root"); 23 strcpy(g_strPasswd,"123456"); 24 25 26 //MYSQL* m_pMyData; 27 28 m_pMyData = mysql_init(NULL); 29 30 if(mysql_real_connect(m_pMyData,g_strIP,g_strUser,g_strPasswd,g_dbName,g_nPort,NULL,0) <0) 31 { 32 mysql_close(m_pMyData); 33 printf("connect failure\n"); 34 exit(0); 35 } 36 37 if(mysql_select_db(m_pMyData,g_dbName) <0) 38 { 39 mysql_close(m_pMyData); 40 printf("select failure\n"); 41 exit(0); 42 } 43 44 //char* userinfo = "select * from user_info"; 45 char* userinfo = "insert into user_info(id,name,password,regtime) values(143,\"joo\",\"123\",\"2011-04-01\")"; 46 mysql_real_query(m_pMyData,userinfo,strlen(userinfo)); 47 48 showTable(); 49 return 0; 50 } 51 52 53 void showTable() 54 { 55 MYSQL_RES *res; //保存查询结果 56 MYSQL_ROW row; //二级指针 57 MYSQL_FIELD* fd; //保存字段结果 58 59 int num_row = 0; 60 int num_col = 0; 61 62 int i,j; 63 const char* strSQL = "select * from user_info"; 64 if(!mysql_real_query(m_pMyData,strSQL,strlen(strSQL))) 65 { 66 //printf("xxx\n"); 67 res = mysql_store_result(m_pMyData); //保存查询结果 68 num_row = mysql_num_rows(res); //得到记录数量 69 num_col = mysql_num_fields(res); //得到字段的数量 70 71 while((fd = mysql_fetch_field(res))) 72 { 73 printf("%s\t",fd->name); 74 } 75 printf("\n"); 76 for( i=0; i<num_row;i++) 77 { 78 //printf("cccc\n"); 79 row = mysql_fetch_row(res); 80 for(j=0; j< num_col;j++) 81 { 82 printf("%s\t",row[j]); 83 } 84 printf("\n"); 85 } 86 mysql_free_result(res); 87 } 88 mysql_close(m_pMyData); 89 }
通过重复调用mysql_fetch_fileld(),可以按顺序访问行内的字段信息。
MYSQL *mysql_init(MYSQL *mysql)
cpmile.sh脚本
1 rm -f output 2 gcc -o output $(mysql_config --cflags) c_mysql.c $(mysql_config --libs)
MySQL库的编译选项为 $(mysql_config --cflags) 和 $(mysql_config --libs)
在实际的工程编译中,一般会采用Make脚本的形式,但由于只有单个文件,写个Make脚本邮电太繁琐。而如果每次手动输入,也费事,所以采用shell脚本。
在执行脚本之前要 chmod u+x compile.sh
table.sql脚本
1 create database chat; 2 3 use chat; 4 5 create table user_info 6 ( 7 id int primary key, 8 name varchar(20) not null, 9 password varchar(10) not null, 10 regtime datetime not null 11 );




浙公网安备 33010602011771号