连接mysql的C++程序,自娱自乐的!

头文件://libmysql.lib 和libmysql.dll 拷贝到代码目录下,也可以在VC里面设置路径

#ifndef _MYSQL_OBJECT_H

#define _MYSQL_OBJECT_H

#include <stdio.h>

#include "winsock.h"

#include "mysql.h"

 

class MySQLObject

{

public:

       MySQLObject(char* cUrl, char* cUser, char* cPwd, char* cDB, int iPort);

       char* Query_Select(char* cTable, char* cSelDate, char* cEx);

       virtual ~MySQLObject()

       {

            mysql_free_result(m_Res);

            mysql_close(m_Sock); 

      }

private:

      MYSQL m_Mysql;

      MYSQL* m_Sock;    //定义数据库连接的句柄,它被用于几乎所有的MySQL函数
      MYSQL_RES * m_Res;       //查询结果集,结构类型
    };

#endif

 

函数定义部分:

#include “mysqlobject.h”

#define STR_LEN 256

#define FREE_OBJECT(Object)\

    {\

          if (NULL != Object)\

          {\

               free(Object);\

               Object = NULL;    \

          }\

     }\

 

MySQLObject::MySQLObject(char* cUrl, char* cUser, char* cPwd, char* cDB, int iPort)

{

     mysql_init(&m_Mysql);

 

     m_Sock = mysql_real_connect(&m_Mysql, cUrl, cUser, cPwd, cDB, iPort, NULL, 0);

 

     if (NULL == m_Sock)

     {

         printf("Couldn't connect to the %s! The error is %s\n", cDB, mysql_error(&m_Mysql));

         //system("pause");

         exit(1);

     }

}

 

//select  cSelDate  from cTable cEx的方式,这个函数是查询出一个字段值返回,如果需要所有的数据段,需要更改返回值

char* MySQLObject::Query_Select(char* cTable, char* cSelDate, char* cEx)

{

      if (NULL == cTable || NULL == cSelStr)

      {

           printf("Your puts is error!\n");

           exit(1);

      }

      char* cTmp =  (char*)malloc(sizeof(char) * STR_LEN);

     

      memser(cTmp, 0, STR_LEN);

      if  (NULL == cEx)

      {

              sprintf(cTmp, "select %s from %s", cSelDate, cTable);

      }

      else

      {

              sprintf(cTmp, "select %s from %s %s", cSelDate, cTable, cEx);

      }

 

     if (mysql_query(m_Sock, cTmp))

     {

            printf("Query failed %s\n", mysql_error(m_Sock));

            FREE_OBJECT(cTmp);

            exit(1);

     }

     FREE_OBJECT(cTmp);

 

     if (! (m_Res = mysql_store_result(m_Sock)))

     {

         printf("Couldn't get result from %s\n", mysql_error(m_Sock));

         exit(1);

     }

     int iRes = mysql_num_fields(m_Res);

     if (1 != iRes)

     {

           printf("The result is not only one, please check your puts!\n");

           exit(1);

    }

 

    MYSQL_ROW Row;

   Row = mysql_fetch_row(m_Res);

 

    return Row[0];

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值