第一个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 );

 

 

 

 

 

posted @ 2017-05-24 22:47  ren_zhg1992  阅读(151)  评论(0)    收藏  举报