C++连接查询mysql数据库的漂亮代码

来源:互联网 发布:java动态代理应用场景 编辑:程序博客网 时间:2024/06/02 05:57
  1. #include <mysql/mysql.h>  
  2. #include <stdio.h>  
  3. #include <string.h>  
  4. int main()  
  5. {  
  6.     MYSQL mysql;//连接数据库的变量  
  7.     MYSQL_RES *res;//存放查询结果的变量  
  8.     MYSQL_ROW row;  
  9.     char *query;  
  10.     int t,r;  
  11.     char *server= "localhost";  
  12.     char *user = "root";  
  13.     char *password="jinyong";  
  14.     char *database = "test";  
  15.     mysql_init(&mysql); //连接数据库前,必须调用此函数初始化变量  
  16.     /** 
  17.      * MYSQL *mysql_init(MYSQL *mysql) 
  18.      * 传入MYSQL类型的指针 
  19.      * 返回一个被初始化的MYSQL*句柄 
  20.      * 在内存不够的情况下,返回NULL 
  21.      */  
  22.     if(!mysql_real_connect(&mysql,server,user,password,database,0/*TCP IP端口*/,NULL/*Unix socket连接类型*/,0/*运行成ODBC数据库的标记*/))  
  23.     {  
  24.         printf("Error connection to database:%s/n",mysql_error(&mysql));  
  25.     }else  
  26.         printf("Connected.../n");  
  27.     query = "select * from t1";  
  28.     printf("query execute:%s/n",query);  
  29.     t = mysql_real_query(&mysql,query,(unsigned int) strlen(query));  
  30.     /** 
  31.      * 
  32.      * int STDCALL mysql_real_query(MYSQL *mysql,const char *q, unsigned int length); 
  33.      * 执行任何SQL查询语句进行查询。 
  34.      * mysql是我们前面用过的变量,q是SQL查询语句,length是这个查询语句的长度。 
  35.      */  
  36.     if(t)  
  37.     {  
  38.         printf("Error making query:%s/n",mysql_error(&mysql));  
  39.     }else  
  40.         printf("[%s] made.../n",query);  
  41.     res = mysql_store_result(&mysql);  
  42.     /** 
  43.      * mysql_store_result(MYSQL *mysql) 
  44.      * 立刻检索全部结果 
  45.      * 
  46.      * mysql_use_result(MYSQL *mysql) 
  47.      * 初始化一个一行一行地结果集合的检索 
  48.      */  
  49.     while(row = mysql_fetch_row(res))  
  50.     {  
  51.         /** 
  52.          * MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result); 
  53.          * 检索行 
  54.          */  
  55.         for(t=0;t<=mysql_num_fields(res);t++)  
  56.         {  
  57.             printf("%s",row[t]);  
  58.         }  
  59.         printf("/n");  
  60.     }  
  61.     printf("mysql_free_result.../n");  
  62.     mysql_free_result(res);  
  63.     /** 
  64.      * mysql_free_result() 
  65.      * 释放由它使用的内存。 
  66.      */  
  67.     sleep(1);  
  68.     //execute the insert query  
  69.     query = "insert into t1(id,name) values(3,'kunp')";  
  70.     t = mysql_real_query(&mysql,query,(unsigned int) strlen(query));  
  71.     if(t)  
  72.     {  
  73.         printf("Error making query:%s/n",query);  
  74.         mysql_error(&mysql);  
  75.     }  
  76.     else printf("[%s] made.../n",query);  
  77.     mysql_close(&mysql);  
  78.     /** 
  79.      * void mysql_close(MYSQL *mysql) 
  80.      * 传入MYSQL类型的指针 
  81.      * 功能,关闭一个服务器连接,并释放与连接相关的内存i 
  82.      */  
  83.     return 1;  
  84. }  
  85. //编译:gcc testsql.c -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient -o testsql  
0 1
原创粉丝点击