C++访问MySql数据库
2013-08-14 19:15
183 查看
今天做了一个小程序,用使用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的类的头文件。
这个类包括了常用的数据库操作,跟常用的数据库访问一样,操作数据库之前首先通过
以下是主程序,对数据库进行常用的操作。
对数据库的操作结果是放在一个MYSQL的数据类型中的通过mysql_query(&mysql,sql)可以将操作结果放入mysql中,然后通过mysql_store_result(&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"); else printf(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)将结果集取出来。
以上程序是我根据从网上找的程序修改而来的,希望对大家有所帮助。
相关文章推荐
- linux下使用c++访问mysql数据库编译问题
- linux下使用c++访问mysql数据库编译问题
- Linux下eclipse及mysql安装,c++访问mysql数据库
- 使用C++访问MySql数据库的方法
- 为 DEV-C++ 生成 libmysql.a 的过程 及 windows下 devc++ c语言访问mysql数据库 环境配置
- mysql的安装、C++访问mysql数据库、编码设置问题
- Linux下C++访问MySQL数据库
- C++访问mysql数据库
- Linux下C++访问MySQL数据库
- C++访问MYSQL数据库
- Linux Eclipse开发环境C++访问Mysql数据库的设置
- Win7下 dev-c++用c语言访问mysql数据库环境配置
- c++访问mysql数据库
- linux(ubuntu)下C++访问mysql数据库
- Linux下C++访问MySQL数据库
- Linux下C++访问MySQL数据库
- mysql的安装、C++访问mysql数据库、编码设置问题
- 为 DEV-C++ 生成 libmysql.a 的过程 及 windows下 devc++ c语言访问mysql数据库 环境配置
- linux(ubuntu)下C++访问mysql数据库
- mysql的安装、C++访问mysql数据库、编码设置问题