`
东边日出西边雨
  • 浏览: 258166 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

c语言操作mysql数据库(Ubuntu11.04)

    博客分类:
  • c
阅读更多

 

系统:Ubuntu11.04

 

    1.刚安装完系统是没有mysql数据库的,首先我们要安装mysql数据库:

 

                              sudo apt-get install mysql-server-5.1

 

自动的,mysql就安装好了(包含server和client)。

 

    2.需要用c语言去操作mysql,我们需要安装mysql的c语言开发包:

 

                              sudo apt-get install libmysqlclient16-dev

 

到现在你已经能用c语言操作mysql数据库了!

注意:程序中要加入头文件: #include <mysql/mysql.h>

         编译时别忘了连接库: gcc -o a a.c -lmysqlclient

 

    3.c语言集成开发环境(IDE)中,比较喜欢codeblocks,安装codeblocks:

 

                              sudo apt-get install codeblocks

 

在codeblocks中的Settings->Compiler and debugger->Linker settings中加入mysqlclient,这样IDE编译时就会自动连接mysqlclient库了。

 

使用codeblocks的好处在于其函数提示功能!这是vi编辑器不能比拟的

 

    4.具体操作数据库的过程,参考下面程序,该程序是从其他地方拷贝来的:

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>  // MySQL头文件

int main(int argc, char *argv[]) {

   int         t, r;
   char        *query;
   MYSQL       *conn_ptr;
   MYSQL_RES   *res;
   MYSQL_ROW   row;

   // 初始化一个类型为MYSQL的数据结构
   conn_ptr = mysql_init(NULL);  

   if (!conn_ptr) {  
      fprintf(stderr, "mysql_init failed\n");
      return EXIT_FAILURE;  
   }

   // 与MySQL数据库引擎建立连接。
   conn_ptr = mysql_real_connect(conn_ptr, "localhost", "root", "root",  
     "test", 0, NULL, 0);  

   if (conn_ptr) {  
      printf("Connection success\n");  
   } 
   else {  
      printf("Connection failed\n");  
   }  

   query = "select * from stu";

   // 执行query字符串中的SQL语句
   t = mysql_real_query(conn_ptr, query, (unsigned int)strlen(query) ); 

   if (t)
   {
      printf("Error making query: %s\n", mysql_error(conn_ptr));
   }
   else
   {
      printf("Query made...\n");
   }

  
    /* 获取语句执行的返回结果。(第一种)
    res=mysql_store_result(conn_ptr);

    for(r = 0; r <= mysql_num_rows(conn_ptr); r++)
    {

        // 取回结果集中的下一条记录 。
        row = mysql_fetch_row(res);

        if(row < 0)
            break;

        // 获得一条记录中的各个字段
        for(t = 0; t < mysql_num_fields(res); t++)
        {
            printf("%s ",row[t]);
        }

        printf("\n");
    }
*/

    /* 获取语句执行的返回结果。(第二种)
    res = mysql_use_result(conn_ptr);

    while(row = mysql_fetch_row(res)) {

        for (t = 0; t < mysql_num_fields(res); t++) {
            printf("%s ", row[t]);
        }

        printf("\n");
    }
*/

//上面是两种获取结果的方法,都是正确的!
//第一种用mysql_store_result()把结果集拷贝倒客户端,然后再操作。
//第二种没有拷贝,而是一条记录一条记录的从服务器读取。
//MySQL参考手册中的函数说明:
//            mysql_store_result() 检索完整的结果集至客户端。
//            mysql_use_result() 初始化逐行的结果集检索。

    mysql_close(conn_ptr);

    return 0;
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics