赞
踩
1.int mysql_library_init(int argc, char **argv, char **groups)
在调用任何其他MySQL函数之前,调用此函数初始化MySQL客户端库。
2.void mysql_library_end(void)
完成使用库后调用它(例如,在断开与服务器的连接后)。
- #include <mysql/mysql.h>
- #include <iostream>
- using namespace std;
-
- int main()
- {
- if (mysql_library_init(0, NULL, NULL)) {
- fprintf(stderr, "could not initialize MySQL client library\n");
- exit(1);
- }
-
- /* Use any MySQL API functions here */
-
- mysql_library_end();
-
- return 0;
- }
3.MYSQL *mysql_init(MYSQL *mysql)
初始化一个用于连接的对象,如果 mysql
是NULL
指针,则函数分配,初始化并返回新对象。否则,初始化对象并返回对象的地址。如果 mysql_init()分配新对象,则在mysql_close()调用它以关闭连接时将释放该对象 。
4.void mysql_close(MYSQL *mysql)
关闭先前打开的连接。
5.int mysql_options(MYSQL *mysql, enum mysql_option option, const void *arg)
可用于设置额外的连接选项并影响连接的行为。可以多次调用此函数以设置多个选项。要检索选项值,可使用mysql_get_option()。
6.MYSQL *mysql_real_connect(
MYSQL *mysql, //现有MYSQL
结构的地址
const char *host, //主机名或IP地址
const char *user, //用户的MySQL登录ID
const char *passwd, //密码
const char *db, //数据库名称
unsigned int port, //如果port
不为0,则该值用作TCP / IP连接的端口号
const char *unix_socket, //如果unix_socket
不是 NULL
,则字符串指定要使用的套接字或命名管道
unsigned long client_flag) //值client_flag
通常为0,但可以设置为特定组合以启用某些功能
尝试连接正在运行的mysql的host, mysql_real_connect()必须先成功完成,然后才能执行需要有效MYSQL连接
的任何其他API函数。
7.int mysql_query(MYSQL *mysql, const char *stmt_str)
执行sql语句,第二个参数是包含sql语句的字符串数组或字符指针
8.MYSQL_RES *mysql_store_result(MYSQL *mysql)
在任何有结果集的mysql_query()调用之后需要再调用mysql_store_result()来获得结果
9.void mysql_free_result(MYSQL_RES *result)
完成结果集后,必须通过调用释放它使用的内存,释放后不要尝试访问结果集
10.my_ulonglong mysql_num_rows(MYSQL_RES *result)
结果集中的行数
11.unsigned int mysql_num_fields(MYSQL_RES *result)
返回结果集中的列数
12.MYSQL_FIELD *mysql_fetch_field_direct(MYSQL_RES *result, unsigned int fieldnr)
使用此函数可以检索任意列的定义
13.MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
检索任意行的结果
14.MYSQL_RES *mysql_list_dbs(MYSQL *mysql, const char *wild)
返回由服务器上与wild
参数指定的简单正则表达式匹配的数据库名称组成的结果集,调用 mysql_list_dbs()类似于执行查询 SHOW DATABASES [LIKE
wild
]
15.
bool mysql_change_user(MYSQL *mysql, const char *user, const char *password, const char *db)
更改用户并使指定的数据库 db
成为指定连接
示例代码:test.cpp
- #include <mysql/mysql.h>
- #include <iostream>
-
- using namespace std;
-
- int Mysqltest()
- {
- MYSQL mydata;
- //初始化
- if (0 == mysql_library_init(0, NULL, NULL)) {
- cout << "mysql_library_init() succeed" << endl;
- }
- else {
- cout << "mysql_library_init() failed" << endl;
- }
- if (NULL != mysql_init(&mydata)) {
- cout << "mysql_init(mydata) succeed" << endl;
- }
- else {
- cout << "mysql_init(mydata) failed" << endl;
- return -1;
- }
- //处理中文
- if (0 == mysql_options(&mydata, MYSQL_SET_CHARSET_NAME, "utf8")) {
- cout << "mysql_options() succeed" << endl;
- }
- else {
- cout << "mysql_options() failed" << endl;
- }
- //连接数据库
- if (NULL != mysql_real_connect(&mydata, "localhost", "root", "12345", "test", 3306, NULL, 0)) {
- cout << "mysql_real_connect() succeed" << endl;
- }
- else {
- cout << "mysql_real_connect() failed" << endl;
- return -1;
- }
- string sqlstr;
- //建表
- sqlstr = "CREATE TABLE IF NOT EXISTS new_paper(";
- sqlstr += "NewID int(11) NOT NULL AUTO_INCREMENT,";
- sqlstr += "NewCaption varchar(40) NOT NULL,";
- sqlstr += "NewContent text,";
- sqlstr += "NewTime datetime DEFAULT NULL,";
- sqlstr += "PRIMARY KEY(NewID)";
- sqlstr += ")ENGINE = InnoDB DEFAULT CHARSET = utf8"
- ;
- if (0 == mysql_query(&mydata, sqlstr.c_str())) {
- cout << "mysql_query() create table succeed" << endl;
- }
- else {
- cout << "mysql_query() create table failed" << endl;
- mysql_close(&mydata);
- return -1;
- }
- //插入数据
- for (int i = 0; i < 5; i++) {
- sqlstr = "INSERT INTO test.new_paper(NewID,NewCaption,NewContent,NewTime)";
- sqlstr += "VALUES(default,'小明','吃了两个西瓜','2017-01-11');";
- if (0 == mysql_query(&mydata, sqlstr.c_str())) {
- cout << "mysql_query() insert data succeed" << endl;
- }
- else {
- cout << "mysql_query() insert data failed" << endl;
- mysql_close(&mydata);
- return -1;
- }
- }
- //显示数据
- sqlstr = "SELECT NewID,NewCaption,NewContent,NewTime FROM test.new_paper";
- MYSQL_RES *result = NULL;
- if (0 == mysql_query(&mydata, sqlstr.c_str())) {
- cout << "mysql_query() select data succeed" << endl;
- result = mysql_store_result(&mydata);
- int rowcount = mysql_num_rows(result);
- cout << "row count:" << rowcount << endl;
-
- unsigned int fieldcount = mysql_num_fields(result);
- MYSQL_FIELD *field = NULL;
- for (unsigned int i = 0; i < fieldcount; i++) {
- field = mysql_fetch_field_direct(result, i);
- cout << field->name << "\t\t";
- }
- cout << endl;
-
- MYSQL_ROW row = NULL;
- row = mysql_fetch_row(result);
- while (NULL != row) {
- for (int i = 0; i < fieldcount; i++) {
- cout << row[i] << "\t\t";
- }
- cout << endl;
- row = mysql_fetch_row(result);
- }
- }
- else {
- cout << "mysql_query() select data failed" << endl;
- mysql_close(&mydata);
- return -1;
- }
- //删除表
- sqlstr = "DROP TABLE test.new_paper";
- if (0 == mysql_query(&mydata, sqlstr.c_str())) {
- cout << "mysql_query() drop table succeed" << endl;
- }
- else {
- cout << "mysql_query() drop table failed" << endl;
- mysql_close(&mydata);
- return -1;
- }
- mysql_free_result(result);
- mysql_close(&mydata);
- mysql_library_end();
-
- return 0;
- }
-
- int main()
- {
- Mysqltest();
- return 0;
- }
编译:
g++ test.cpp `mysql_config --cflags --libs` -o test
运行结果:
- fs@ubuntu:~$ ./test
- mysql_library_init() succeed
- mysql_init(mydata) succeed
- mysql_options() succeed
- mysql_real_connect() succeed
- mysql_query() create table succeed
- mysql_query() insert data succeed
- mysql_query() insert data succeed
- mysql_query() insert data succeed
- mysql_query() insert data succeed
- mysql_query() insert data succeed
- mysql_query() select data succeed
- row count:5
- NewID NewCaption NewContent NewTime
- 1 小明 吃了两个西瓜 2017-01-11 00:00:00
- 2 小明 吃了两个西瓜 2017-01-11 00:00:00
- 3 小明 吃了两个西瓜 2017-01-11 00:00:00
- 4 小明 吃了两个西瓜 2017-01-11 00:00:00
- 5 小明 吃了两个西瓜 2017-01-11 00:00:00
- mysql_query() drop table succeed
注:使用完数据库之后一定不要忘记释放内存和断开连接,关闭数据库!(mysql_free_result()、mysql_close()、mysql_library_end())
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。