当前位置:   article > 正文

C++程序调用mysql数据库_c++ mysql.h

c++ mysql.h

1.int mysql_library_init(int argc, char **argv, char **groups)

在调用任何其他MySQL函数之前,调用此函数初始化MySQL客户端库。

2.void mysql_library_end(void)

完成使用库后调用它(例如,在断开与服务器的连接后)。

  1. #include <mysql/mysql.h>
  2. #include <iostream>
  3. using namespace std;
  4. int main()
  5. {
  6. if (mysql_library_init(0, NULL, NULL)) {
  7. fprintf(stderr, "could not initialize MySQL client library\n");
  8. exit(1);
  9. }
  10. /* Use any MySQL API functions here */
  11. mysql_library_end();
  12. return 0;
  13. }

3.MYSQL *mysql_init(MYSQL *mysql)

初始化一个用于连接的对象,如果 mysqlNULL指针,则函数分配,初始化并返回新对象。否则,初始化对象并返回对象的地址。如果 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

  1. #include <mysql/mysql.h>
  2. #include <iostream>
  3. using namespace std;
  4. int Mysqltest()
  5. {
  6. MYSQL mydata;
  7. //初始化
  8. if (0 == mysql_library_init(0, NULL, NULL)) {
  9. cout << "mysql_library_init() succeed" << endl;
  10. }
  11. else {
  12. cout << "mysql_library_init() failed" << endl;
  13. }
  14. if (NULL != mysql_init(&mydata)) {
  15. cout << "mysql_init(mydata) succeed" << endl;
  16. }
  17. else {
  18. cout << "mysql_init(mydata) failed" << endl;
  19. return -1;
  20. }
  21. //处理中文
  22. if (0 == mysql_options(&mydata, MYSQL_SET_CHARSET_NAME, "utf8")) {
  23. cout << "mysql_options() succeed" << endl;
  24. }
  25. else {
  26. cout << "mysql_options() failed" << endl;
  27. }
  28. //连接数据库
  29. if (NULL != mysql_real_connect(&mydata, "localhost", "root", "12345", "test", 3306, NULL, 0)) {
  30. cout << "mysql_real_connect() succeed" << endl;
  31. }
  32. else {
  33. cout << "mysql_real_connect() failed" << endl;
  34. return -1;
  35. }
  36. string sqlstr;
  37. //建表
  38. sqlstr = "CREATE TABLE IF NOT EXISTS new_paper(";
  39. sqlstr += "NewID int(11) NOT NULL AUTO_INCREMENT,";
  40. sqlstr += "NewCaption varchar(40) NOT NULL,";
  41. sqlstr += "NewContent text,";
  42. sqlstr += "NewTime datetime DEFAULT NULL,";
  43. sqlstr += "PRIMARY KEY(NewID)";
  44. sqlstr += ")ENGINE = InnoDB DEFAULT CHARSET = utf8"
  45. ;
  46. if (0 == mysql_query(&mydata, sqlstr.c_str())) {
  47. cout << "mysql_query() create table succeed" << endl;
  48. }
  49. else {
  50. cout << "mysql_query() create table failed" << endl;
  51. mysql_close(&mydata);
  52. return -1;
  53. }
  54. //插入数据
  55. for (int i = 0; i < 5; i++) {
  56. sqlstr = "INSERT INTO test.new_paper(NewID,NewCaption,NewContent,NewTime)";
  57. sqlstr += "VALUES(default,'小明','吃了两个西瓜','2017-01-11');";
  58. if (0 == mysql_query(&mydata, sqlstr.c_str())) {
  59. cout << "mysql_query() insert data succeed" << endl;
  60. }
  61. else {
  62. cout << "mysql_query() insert data failed" << endl;
  63. mysql_close(&mydata);
  64. return -1;
  65. }
  66. }
  67. //显示数据
  68. sqlstr = "SELECT NewID,NewCaption,NewContent,NewTime FROM test.new_paper";
  69. MYSQL_RES *result = NULL;
  70. if (0 == mysql_query(&mydata, sqlstr.c_str())) {
  71. cout << "mysql_query() select data succeed" << endl;
  72. result = mysql_store_result(&mydata);
  73. int rowcount = mysql_num_rows(result);
  74. cout << "row count:" << rowcount << endl;
  75. unsigned int fieldcount = mysql_num_fields(result);
  76. MYSQL_FIELD *field = NULL;
  77. for (unsigned int i = 0; i < fieldcount; i++) {
  78. field = mysql_fetch_field_direct(result, i);
  79. cout << field->name << "\t\t";
  80. }
  81. cout << endl;
  82. MYSQL_ROW row = NULL;
  83. row = mysql_fetch_row(result);
  84. while (NULL != row) {
  85. for (int i = 0; i < fieldcount; i++) {
  86. cout << row[i] << "\t\t";
  87. }
  88. cout << endl;
  89. row = mysql_fetch_row(result);
  90. }
  91. }
  92. else {
  93. cout << "mysql_query() select data failed" << endl;
  94. mysql_close(&mydata);
  95. return -1;
  96. }
  97. //删除表
  98. sqlstr = "DROP TABLE test.new_paper";
  99. if (0 == mysql_query(&mydata, sqlstr.c_str())) {
  100. cout << "mysql_query() drop table succeed" << endl;
  101. }
  102. else {
  103. cout << "mysql_query() drop table failed" << endl;
  104. mysql_close(&mydata);
  105. return -1;
  106. }
  107. mysql_free_result(result);
  108. mysql_close(&mydata);
  109. mysql_library_end();
  110. return 0;
  111. }
  112. int main()
  113. {
  114. Mysqltest();
  115. return 0;
  116. }

编译:

g++ test.cpp `mysql_config --cflags --libs` -o test

运行结果:

  1. fs@ubuntu:~$ ./test
  2. mysql_library_init() succeed
  3. mysql_init(mydata) succeed
  4. mysql_options() succeed
  5. mysql_real_connect() succeed
  6. mysql_query() create table succeed
  7. mysql_query() insert data succeed
  8. mysql_query() insert data succeed
  9. mysql_query() insert data succeed
  10. mysql_query() insert data succeed
  11. mysql_query() insert data succeed
  12. mysql_query() select data succeed
  13. row count:5
  14. NewID NewCaption NewContent NewTime
  15. 1 小明 吃了两个西瓜 2017-01-11 00:00:00
  16. 2 小明 吃了两个西瓜 2017-01-11 00:00:00
  17. 3 小明 吃了两个西瓜 2017-01-11 00:00:00
  18. 4 小明 吃了两个西瓜 2017-01-11 00:00:00
  19. 5 小明 吃了两个西瓜 2017-01-11 00:00:00
  20. mysql_query() drop table succeed

注:使用完数据库之后一定不要忘记释放内存和断开连接,关闭数据库!(mysql_free_result()、mysql_close()、mysql_library_end())

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/663266
推荐阅读
相关标签
  

闽ICP备14008679号