SQL操作简单实现
2012-11-01 10:23 龙成 阅读(257) 评论(0) 编辑 收藏 举报1 #pragma once 2 3 #include "mysql.h" 4 #include <string> 5 #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 //判断表是否存在,如果存在返回TRUE 17 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 &updatasql 120 输出参数 :无 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 querysql 135 输出参数 :无 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 &createsql 157 输出参数 :无 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 &insertsq 172 输出参数 :无 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 &deletesql 187 输出参数 :无 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 &tablename 202 输出参数 :无 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 else 215 { 216 ReleaseAfterQuerySQL(result); 217 return TRUE; 218 } 219 } 220 221 /************************************************************************ 222 功能描述 :ReleaseAfterQuerySQL 释放MYSQL_RES资源 223 输入参数 :MYSQL_RES *SQL_RE 224 输出参数 :无 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 }