C++连接数据库

来源:互联网 发布:指纹匹配算法 编辑:程序博客网 时间:2024/06/06 04:27
用于使用C++连接MySql的朋友。只是一个简单的封装,没有大规模测试过,自用暂未发现问题。PS:我C++环境是VS2010DBUtil.h#pragma once      #include "winsock.h"#include <mysql.h>#include <iostream>#include <string>      using namespace std;      class DBUtil{private:    MYSQL mydata;    MYSQL_RES *results;public:    DBUtil(void);    virtual ~DBUtil(void);          bool executeSql(string sql);    MYSQL_RES* querySql(string sql);};DBUtil.cpp#include "StdAfx.h"#include "winsock.h"#include <mysql.h>#include <iostream>#include <string>#include "DBUtil.h"       #pragma comment(lib, "ws2_32.lib")  #pragma comment(lib, "libmysql.lib")         using namespace std;       DBUtil::DBUtil(void){    //初始化MySQL C API库    mysql_library_init(0,NULL,NULL);    //初始化mydata的数据结构,mydata是MYSQL对象    mysql_init(&mydata);    //连接选项:添加GBK字符集支    mysql_options(&mydata,MYSQL_SET_CHARSET_NAME,"gbk");    //连接数据库    //这儿换上自己的MySql配置    //mysql_real_connect(&mydata,"服务器地址","用户名","密码","数据库名","端口",0,0)    if(mysql_real_connect(&mydata,"localhost","root","admin","db_test",3306,0,0)==NULL) {        cout<<"数据库连接错误"<<endl;        system("exit");    }}              DBUtil::~DBUtil(void){    //关闭数据库        mysql_close(&mydata);    mysql_library_end();}     //executeSql用于执行语句,像insert,update,drop等  bool DBUtil::executeSql(string sql) {    bool sqlFlag=false;    char sqlText[500]="";    //string转*char    strcpy_s(sqlText,sql.c_str());    //执行sql语句    if(mysql_query(&mydata,sqlText)==0) {        sqlFlag=true;    }    else {        cout<<"sql语句执行错误"<<endl;        return sqlFlag;    }    return sqlFlag;}       //querySql用于执行查询语句MYSQL_RES* DBUtil::querySql(string sql) {    char sqlText[500]="";    //string转*char    strcpy_s(sqlText,sql.c_str());    //执行sql语句    if(mysql_query(&mydata,sqlText)==1) {        cout<<"sql语句执行错误"<<endl;    }    results = mysql_store_result(&mydata);    return results;}执行Sql语句(executeSql)的程序示例#include "stdafx.h"#include <iostream>#include "DBUtil.h"    using namespace std;    int _tmain(int argc, _TCHAR* argv[]){    DBConnection testDBConnection ;    //Sql在这儿    testDBConnection.executeSql("CREATE TABLE `tb_test2`(`id` INT NOT NULL,PRIMARY KEY(`id`));");    system("pause");    return 0 ;}查询Sql语句(querySql)的程序示例#include "stdafx.h"#include "winsock.h"#include <mysql.h>#include <iostream>#include "DBConnection.h"    using namespace std;    int _tmain(int argc, _TCHAR* argv[]){    DBConnection testDBConnection ;    MYSQL_ROW record;    //Sql在这儿    MYSQL_RES *results=testDBConnection.querySql("SELECT `id`,`age` FROM db_test.tb_test;");    while((record = mysql_fetch_row(results))) {        //这里的取值因Sql语句而异,还有record[2]等        printf("%s-%s\n", record[0], record[1]);    }    system("pause");    return 0 ;}

原创粉丝点击