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 }