1 #pragma once 2 3 #include "mysql.h" 4 #include5 #pragma comment(lib,"libmySQL.lib") 6 7 class Dboperator 8 { 9 public:10 Dboperator();11 ~Dboperator();12 public:13 //设置数据库主机IP、端口号、账号、密码14 void SetValue(std::string host,UINT port,std::string db,15 std::string user,std::string password);16 //判断表是否存在,如果存在返回TRUE17 BOOL IsTable(CString &tablename);18 //查询数据19 MYSQL_RES* Select(CString &selectstl);20 //修改数据21 BOOL Updata(CString &updatasql);22 //新建一个表23 BOOL CreateTable(CString &createsql);24 //增加数据25 BOOL Insret(CString &insertsql);26 //数据库连接27 BOOL ConnDb();28 //释放MYSQL_RES资源29 void ReleaseAfterQuerySQL(MYSQL_RES *SQL_RES);30 //删除某张数据表31 BOOL Destroy(CString &deletsql); 32 //关闭数据库连接 33 void DisConnect();34 private:35 //查询SQL的功能函数36 BOOL query(CString &querysql);37 private:38 BOOL m_bConnected;//判断是否连接39 MYSQL m_MyData;40 std::string m_host;41 std::string m_user; 42 std::string m_passwd;43 std::string m_dbname;44 UINT m_port;45 };
1 #include "stdafx.h" 2 #include "Dboperator.h" 3 4 /************************************************************************ 5 功能描述 :Dbopreator 构造函数 ,设定初始值 6 输入参数 : 7 输出参数 :无 8 返回值 :无 9 ************************************************************************/ 10 Dboperator::Dboperator() 11 { 12 m_host = "192.168.59.55"; 13 m_user = "root"; 14 m_passwd = "123456"; 15 m_dbname = "filedata"; 16 m_port = 3306; 17 m_bConnected = false; 18 } 19 20 /************************************************************************ 21 功能描述 :Dbopreator 析构函数 22 输入参数 : 23 输出参数 :无 24 返回值 :无 25 ************************************************************************/ 26 Dboperator::~Dboperator() 27 { 28 29 } 30 31 /************************************************************************ 32 功能描述 :SetValue 设置数据库的属性 33 输入参数 :string host,UINT port,string db, 34 string user,string password 35 输出参数 :无 36 返回值 :无 37 ************************************************************************/ 38 void Dboperator::SetValue(std::string host,UINT port,std::string db, 39 std::string user,std::string password) 40 { 41 m_host = host; 42 m_port = port; 43 m_dbname = db; 44 m_user = user; 45 m_passwd = password; 46 } 47 48 /************************************************************************ 49 功能描述 :DisConnect 断开数据库连接 50 输入参数 : 51 输出参数 :无 52 返回值 :无 53 ************************************************************************/ 54 void Dboperator::DisConnect() 55 { 56 if(m_bConnected) 57 { 58 mysql_close(&m_MyData); 59 // AfxMessageBox(_T("数据库断开成功")); 60 m_bConnected = FALSE; 61 } 62 } 63 64 /************************************************************************ 65 功能描述 :ConnDb 连接数据库 66 输入参数 : 67 输出参数 :无 68 返回值 :BOOL 判断是否连接成功 69 ************************************************************************/ 70 BOOL Dboperator::ConnDb() 71 { 72 MYSQL * pMySql = NULL; 73 pMySql = mysql_init(&m_MyData); 74 if (pMySql == NULL) 75 { 76 return false; 77 } 78 DisConnect(); 79 pMySql = mysql_real_connect(&m_MyData, m_host.c_str(),m_user.c_str(), 80 m_passwd.c_str(),m_dbname.c_str(), m_port, NULL, 0); 81 if (pMySql == NULL) 82 { 83 return false; 84 } 85 m_bConnected = true; 86 return true; 87 } 88 89 /************************************************************************ 90 功能描述 :Select 查询数据库 91 输入参数 :CString &selectsql 92 输出参数 :无 93 返回值 :MYSQL_RES* 94 ************************************************************************/ 95 MYSQL_RES* Dboperator::Select(CString &selectsql) 96 { 97 USES_CONVERSION; 98 char *ch_query = (char*)T2CA(selectsql); 99 if(mysql_real_query(&m_MyData,ch_query,(UINT)strlen(ch_query))!=0)100 {101 return NULL;102 }103 MYSQL_RES *result;104 int FieldNum = mysql_field_count(&m_MyData);105 if ( FieldNum == 0 )106 {107 return NULL;108 }109 if(!(result=mysql_use_result(&m_MyData)))110 {111 return NULL;112 }113 return result;114 115 }116 117 /************************************************************************118 功能描述 :Updata 更新数据库119 输入参数 :CString &updatasql120 输出参数 :无121 返回值 :BOOL 判断是否更新成功122 ************************************************************************/123 BOOL Dboperator::Updata(CString &updatasql)124 {125 if(!query(updatasql))126 {127 return FALSE;128 }129 return TRUE;130 }131 132 /************************************************************************133 功能描述 :query 数据库查询方法134 输入参数 :CString querysql135 输出参数 :无136 返回值 :BOOL 判断是否查询成功137 ************************************************************************/138 BOOL Dboperator::query(CString &querysql)139 {140 USES_CONVERSION;141 char *pStr = (char*)T2CA(querysql);142 if (!m_bConnected)143 {144 AfxMessageBox(_T("数据库未连接!"));145 return FALSE;146 }147 if(mysql_real_query(&m_MyData,pStr,(UINT)strlen(pStr))!=0)148 {149 return FALSE;150 }151 return TRUE;152 }153 154 /************************************************************************155 功能描述 :CreateTable 创建数据库表156 输入参数 :CString &createsql157 输出参数 :无158 返回值 :BOOL 判断是否创建成功159 ************************************************************************/160 BOOL Dboperator::CreateTable(CString &createsql)161 {162 if(!query(createsql))163 {164 return FALSE;165 }166 return TRUE;167 }168 169 /************************************************************************170 功能描述 :Insret 增加数据171 输入参数 :CString &insertsq172 输出参数 :无173 返回值 :BOOL 判断是否增加成功174 ************************************************************************/175 BOOL Dboperator::Insret(CString &insertsql)176 {177 if(!query(insertsql))178 {179 return FALSE;180 }181 return TRUE;182 }183 184 /************************************************************************185 功能描述 :Destroy 删除表186 输入参数 :CString &deletesql187 输出参数 :无188 返回值 :BOOL 判断是否删除成功189 ************************************************************************/190 BOOL Dboperator::Destroy(CString &deletesql)191 {192 if(!query(deletesql))193 {194 return FALSE;195 }196 return TRUE;197 }198 199 /************************************************************************200 功能描述 :IsTable 查询表是否存在201 输入参数 :CString &tablename202 输出参数 :无203 返回值 :BOOL 判断表是否存在204 ************************************************************************/205 BOOL Dboperator::IsTable(CString &tablename)206 {207 CString istablesql;208 istablesql.Format("select * from %s",tablename);209 MYSQL_RES *result = Select(istablesql);210 if(result == NULL)211 {212 return FALSE;213 }214 else215 {216 ReleaseAfterQuerySQL(result);217 return TRUE;218 }219 }220 221 /************************************************************************222 功能描述 :ReleaseAfterQuerySQL 释放MYSQL_RES资源223 输入参数 :MYSQL_RES *SQL_RE224 输出参数 :无225 返回值 :无226 ************************************************************************/227 void Dboperator::ReleaseAfterQuerySQL(MYSQL_RES *SQL_RES)228 {229 if (NULL != SQL_RES)230 {231 mysql_free_result(SQL_RES);232 SQL_RES =NULL;233 }234 }