zoukankan      html  css  js  c++  java
  • C/C++对MySQL操作

    昨天晚上在看C/C++对数据库的操作,猛然间觉得十分亲切,因为其中很多函数都和PHP中对MySQL操作相同,这是才想起PHP是C演化而来的。经过一番捣腾,终于完成了一个简单的程序,但是仍然存在着一个严重的问题,就是从数据库中得到的结果在屏幕上显示的是乱码,很让人烦。还望高手们赐教!

    1.在机器上装上MySQL ,假设安装在 C:/MySQL/中;

    2.这里我们用VC6.0来编写C++程序,但是这个之前要对VC6.0做一些设置,也就是把MySQL目录下的include和lib目录包含到VC6.0的directory选项中。具体的做法是在VC6.0中 tools(工具)>>option(选项)>>directories(目录)这个设置中把 include files 添加一个路径 C:/MySQL/include ,再给library files 添加一个路径C:/MySQL/lib/opt ,这样设置以后你就能够在程序中直接include对数据库操作的相关头文件了。

    3.现在可以开始写程序了,代码如下:

    //===========================================================//
    //                TestMySQL.cpp
    // Author : ASpire
    // Discrb : for testing C++ in operating mysql
    // Time   : 2010-3-18
    //===========================================================//
    /* include header about mysql */
    #include "winsock2.h"
    #include "mysql.h"

    #include <stdio.h>

    #define CONN_HOST "localhost"
    #define CONN_USER "user"
    #define CONN_PWD "password"
    #define CONN_DB "luntan"

    //----------------------------------------------------------//

    MYSQL mysql;

    void exiterr(int exitcode)
    {
     fprintf(stderr,"%s",mysql_error(&mysql));
     exit(exitcode);
    }

    int mysql_test()
    {
     MYSQL_RES *res;
     MYSQL_ROW row;
     
     unsigned int i = 0;
     
     /* init mysql handler */
     if(!mysql_init(&mysql))
     {
      exiterr(-1);
     }

     /* connect to mysql */
     if(!mysql_real_connect(&mysql,CONN_HOST,CONN_USER,CONN_PWD,NULL,MYSQL_PORT,NULL,0))
     {
      exiterr(-2);
     }

     /* select db */
     if(mysql_select_db(&mysql,CONN_DB))
     {
      exiterr(-3);
     }

     /* set db charset */
     char *sqlcharset = "SET NAMES 'GBK'";

     if(mysql_query(&mysql,sqlcharset))
     {
      exiterr(-6);
     }

     /* execute a query */
     char *sqlstr = "SELECT * FROM forum_auth";

     if(mysql_query(&mysql,sqlstr))
     {
      exiterr(-4);
     }
     
     /* store result */
     if(!(res = mysql_store_result(&mysql)))
     {
      exiterr(-5);
     }

     /* fetch row and get the result */
     while(row = mysql_fetch_row(res))
     {
      for(i=0;i<mysql_num_fields(res);i++)
      {
       printf("%s",row);
      }
      printf("/t");
     }

     /* free result */
     mysql_free_result(res);

     /* close mysql connection */
     mysql_close(&mysql);

     return 0;
    }

    //-----------------------------------------------------------//

    int main()
    {
     mysql_test();
     
     return 0;
    }

    //-----------------------------------------------------------//

  • 相关阅读:
    jstl标签
    get和post
    try中的局部变量在finally中是找不到的。
    bzoj 4408: [Fjoi 2016]神秘数 数学 可持久化线段树 主席树
    ZOJ2112 BZOJ1901 Dynamic Rankings 树套树 带修改的区间第k小
    BZOJ 2120: 数颜色 带修改的莫队算法 树状数组套主席树
    POJ2104 K-th Number 不带修改的主席树 线段树
    POJ 2891 Strange Way to Express Integers 中国剩余定理 数论 exgcd
    POJ1151 Atlantis 水题 计算几何
    BZOJ 2333: [SCOI2011]棘手的操作 可并堆 左偏树 set
  • 原文地址:https://www.cnblogs.com/cy568searchx/p/2845238.html
Copyright © 2011-2022 走看看