您的位置:首页 > 编程语言 > C语言/C++

一个实现C/C++连接MYSQL数据库的很好的例子

2013-04-13 08:16 453 查看

一个实现C/C++连接MYSQL数据库的很好的例子

标签: <无>

代码片段(1)

[代码] [C/C++]代码

001
//下面的代码是一个实现C++连接MYSQL数据库的很好的例子
002
//这里用了建表,插入,检索,删表等常用功能
003
//我用VC++6.0生成,已经成功连接了。
004
//在VC++6.0中要想把做一下两步准备工作才可以。
005
//(1)Tools->Options->Directories->Include files中添加C:\Program Files\MySQL\MySQL Server 6.0\include
006
//(2)Tools->Options->Directories->Library files中添加C:\Program Files\MySQL\MySQL Server 6.0\lib\opt
007
//其实就是将头文件和库文件包含进来
008
//我觉得这个例子写的很好,再结合自己的试验,特地介绍给大家!
009
010
#include <winsock.h>
011
#include <iostream>
012
#include <string>
013
#include <mysql.h>
014
using
namespace
std;
015
016
#pragma comment(lib,"ws2_32.lib")
017
#pragma comment(lib,"libmysql.lib")
018
019
//单步执行,不想单步执行就注释掉
020
#define STEPBYSTEP
021
022
int
main() {
023
cout <<

"****************************************"
<< endl;
024
025
#ifdef STEPBYSTEP
026
system
(
"pause"
);
027
#endif
028
029
//必备的一个数据结构
030
MYSQL mydata;
031
032
//初始化数据库
033
if

(0 == mysql_library_init(0,NULL,NULL)) {
034
cout <<
"mysql_library_init() succeed"
<< endl;
035
}

else
{
036
cout <<
"mysql_library_init() failed"
<< endl;
037
return

-1;
038
}
039
040
#ifdef STEPBYSTEP
041
system
(
"pause"
);
042
#endif
043
044
//初始化数据结构
045
if

(NULL != mysql_init(&mydata)) {
046
cout <<
"mysql_init() succeed"
<< endl;
047
}

else
{
048
cout <<
"mysql_init() failed"
<< endl;
049
return

-1;
050
}
051
052
#ifdef STEPBYSTEP
053
system
(
"pause"
);
054
#endif
055
056
//在连接数据库之前,设置额外的连接选项
057
//可以设置的选项很多,这里设置字符集,否则无法处理中文
058
if

(0 == mysql_options(&mydata,MYSQL_SET_CHARSET_NAME,
"gbk"
)) {
059
cout <<
"mysql_options() succeed"
<< endl;
060
}

else
{
061
cout <<
"mysql_options() failed"
<< endl;
062
return

-1;
063
}
064
065
#ifdef STEPBYSTEP
066
system
(
"pause"
);
067
#endif
068
069
//连接数据库
070
if

(NULL
071
!= mysql_real_connect(&mydata,
"localhost"
,
"root"
,
"test"
,
"test"
,
072
3306,NULL,0))
073
//这里的地址,用户名,密码,端口可以根据自己本地的情况更改
074
{
075
cout <<
"mysql_real_connect() succeed"
<< endl;
076
}

else
{
077
cout <<
"mysql_real_connect() failed"
<< endl;
078
return

-1;
079
}
080
081
#ifdef STEPBYSTEP
082
system
(
"pause"
);
083
#endif
084
085
//sql字符串
086
string sqlstr;
087
088
//创建一个表
089
sqlstr =

"CREATE TABLE IF NOT EXISTS user_info"
;
090
sqlstr +=
"("
;
091
sqlstr +=
092
"user_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique User ID',"
;
093
sqlstr +=
094
"user_name VARCHAR(100) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL COMMENT 'Name Of User',"
;
095
sqlstr +=
096
"user_second_sum INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'The Summation Of Using Time'"
;
097
sqlstr +=
");"
;
098
if

(0 == mysql_query(&mydata,sqlstr.c_str())) {
099
cout <<
"mysql_query() create table succeed"
<< endl;
100
}

else
{
101
cout <<
"mysql_query() create table failed"
<< endl;
102
mysql_close(&mydata);
103
return

-1;
104
}
105
106
#ifdef STEPBYSTEP
107
system
(
"pause"
);
108
#endif
109
110
//向表中插入数据
111
sqlstr =
112
"INSERT INTO user_info(user_name) VALUES('公司名称'),('一级部门'),('二级部门'),('开发小组'),('姓名');"
;
113
if

(0 == mysql_query(&mydata,sqlstr.c_str())) {
114
cout <<
"mysql_query() insert data succeed"
<< endl;
115
}

else
{
116
cout <<
"mysql_query() insert data failed"
<< endl;
117
mysql_close(&mydata);
118
return

-1;
119
}
120
121
#ifdef STEPBYSTEP
122
system
(
"pause"
);
123
#endif
124
125
//显示刚才插入的数据
126
sqlstr =

"SELECT user_id,user_name,user_second_sum FROM user_info"
;
127
MYSQL_RES *result = NULL;
128
if

(0 == mysql_query(&mydata,sqlstr.c_str())) {
129
cout <<
"mysql_query() select data succeed"
<< endl;
130
131
//一次性取得数据集
132
result = mysql_store_result(&mydata);
133
//取得并打印行数
134
int

rowcount = mysql_num_rows(result);
135
cout <<
"row count: "
<< rowcount << endl;
136
137
//取得并打印各字段的名称
138
unsigned
int
fieldcount = mysql_num_fields(result);
139
MYSQL_FIELD *field = NULL;
140
for

(unsigned
int
i = 0; i < fieldcount; i++) {
141
field = mysql_fetch_field_direct(result,i);
142
cout <<field->name <<
"\t\t"
;
143
}
144
cout <<endl;
145
146
//打印各行
147
MYSQL_ROW row = NULL;
148
row = mysql_fetch_row(result);
149
while

(NULL != row) {
150
for

(
int
i = 0; i < fieldcount; i++) {
151
cout <<row[i] <<
"\t\t"
;
152
}
153
cout <<endl;
154
row = mysql_fetch_row(result);
155
}
156
157
}

else
{
158
cout <<
"mysql_query() select data failed"
<< endl;
159
mysql_close(&mydata);
160
return

-1;
161
}
162
163
#ifdef STEPBYSTEP
164
system
(
"pause"
);
165
#endif
166
167
//删除刚才建的表
168
sqlstr =

"DROP TABLE user_info"
;
169
if

(0 == mysql_query(&mydata,sqlstr.c_str())) {
170
cout <<
"mysql_query() drop table succeed"
<< endl;
171
}

else
{
172
cout <<
"mysql_query() drop table failed"
<< endl;
173
mysql_close(&mydata);
174
return

-1;
175
}
176
mysql_free_result(result);
177
mysql_close(&mydata);
178
mysql_server_end();
179
180
system
(
"pause"
);
181
return

0;
182
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: