C++访问MySql数据库

来源:互联网 发布:微信查删除好友软件 编辑:程序博客网 时间:2024/06/12 20:05

今天做了一个小程序,用使用C++控制台程序访问MySql数据库,当然可以一直到其他C++项目中。Mysql的安装在这就不说了,见点击打开链接。

安装完毕之后,Mysql的安装目录C:\Program Files\MySQL\MySQL Server 5.5下有include和lib文件夹,在C++项目中,需要配置包含目录和库目录。然后将lib下的libmysql.dll放在C++动态链接库的文件夹中。最后需要下载WS2_32.Lib和ws2_32.dll分别放在C++的库目录和动态链接库目录下。项目配置就到这。

下面是DaoDatabase.h文件,是访问Mysql的类的头文件。

#include <windows.h>#include <mysql.h>#include <iostream>using namespace std;class DaoDatabase{private: MYSQL mysql;public:DaoDatabase();~DaoDatabase();int ConnMySQL(char *host,char * port ,char * Db,char * user,char* passwd,char * charset,char * Msg);string SelectData(char * SQL,int Cnum,char * Msg);int InsertData(char * SQL,char * Msg);int DaoDatabase::UpdateData(char * SQL,char * Msg);int DaoDatabase::DeleteData(char * SQL,char * Msg);void DaoDatabase::CloseMySQLConn();};
下面是DaoDatabase.cpp文件,是访问Mysql的类的实现文件。

#include "DaoDatabase.h"DaoDatabase::DaoDatabase(){}DaoDatabase::~DaoDatabase(){}//初始化数据int DaoDatabase::ConnMySQL(char *host,char * port ,char * Db,char * user,char* passwd,char * charset,char * Msg){if( mysql_init(&mysql) == NULL ){Msg = "inital mysql handle error";return 1;}    if (mysql_real_connect(&mysql,host,user,passwd,Db,0,NULL,0) == NULL){Msg = "Failed to connect to database: Error";return 1;}    if(mysql_set_character_set(&mysql,"GBK") != 0){Msg = "mysql_set_character_set Error";return 1;}return 0;}//查询数据string DaoDatabase::SelectData(char * SQL,int Cnum,char * Msg){MYSQL_ROW m_row;MYSQL_RES *m_res;char sql[2048];sprintf(sql,SQL);int rnum = 0;char rg = 0x06;//行隔开char cg = {0x05};//字段隔开if(mysql_query(&mysql,sql) != 0){Msg = "select ps_info Error";return "";}m_res = mysql_store_result(&mysql);if(m_res==NULL){Msg = "select username Error";return "";}string str("");while(m_row = mysql_fetch_row(m_res)){for(int i = 0;i < Cnum;i++){str += m_row[i];str += rg;}str += rg;             rnum++;}mysql_free_result(m_res);return str;}//插入数据int DaoDatabase::InsertData(char * SQL,char * Msg){char sql[2048];sprintf(sql,SQL);if(mysql_query(&mysql,sql) != 0){Msg = "Insert Data Error";return 1;}return 0;}//更新数据int DaoDatabase::UpdateData(char * SQL,char * Msg){char sql[2048];sprintf(sql,SQL);if(mysql_query(&mysql,sql) != 0){Msg = "Update Data Error";return 1;}return 0;}//删除数据int DaoDatabase::DeleteData(char * SQL,char * Msg){char sql[2048];sprintf(sql,SQL);if(mysql_query(&mysql,sql) != 0){Msg = "Delete Data error";return 1;}return 0;}//关闭数据库连接void DaoDatabase::CloseMySQLConn(){mysql_close(&mysql);}

这个类包括了常用的数据库操作,跟常用的数据库访问一样,操作数据库之前首先通过
mysql_init(&mysql)
得建立连接,然后通过
mysql_real_connect(&mysql,host,user,passwd,Db,0,NULL,0)
建立连接之后,才能对数据库进行操作。

以下是主程序,对数据库进行常用的操作。

#include "DaoDatabase.h"#include<windows.h>#include <iostream>using namespace std;int main(int argc, char* argv[]){char* host="localhost";char* user="root";char* port ="3306";char* passwd="root";char* dbname="firstdatabase"; char* charset = "GBK";//支持中文char* Msg = "";//消息变量//初始化DaoDatabase * daoDatabase = new DaoDatabase();if(daoDatabase->ConnMySQL(host,port,dbname,user,passwd,charset,Msg) == 0)printf("连接成功/r/n");elseprintf(Msg);//查询char * SQL = "SELECT username,password FROM controllor";string str = daoDatabase->SelectData(SQL,2,Msg);if( str.length() > 0 ){printf("查询成功/r/n");std::cout<<str.c_str()<<endl;printf("/r/n");}else{printf(Msg);}//插入SQL = "insert into controllor(username,password) values('feige','feige')";if(daoDatabase->InsertData(SQL,Msg) == 0)printf("插入成功/r/n");////更新//SQL = "update controllor set password='2345' where username = 'feige' ";//if(daoDatabase->UpdateData(SQL,Msg) == 0)//printf("更新成功/r/n");////删除//SQL = "delete from controllor where ids = 'feige' ";//if(daoDatabase->DeleteData(SQL,Msg) == 0)//printf("删除成功/r/n");daoDatabase->CloseMySQLConn();return 0;}
对数据库的操作结果是放在一个MYSQL的数据类型中的通过mysql_query(&mysql,sql)可以将操作结果放入mysql中,然后通过mysql_store_result(&mysql)将结果集取出来。

以上程序是我根据从网上找的程序修改而来的,希望对大家有所帮助。

原创粉丝点击