代码改变世界

SQL操作简单实现

2012-11-01 10:23  龙成  阅读(256)  评论(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 }