您现在的位置: 万盛学电脑网 >> 程序编程 >> 数据库 >> mysql教程 >> 正文

MySQL学习笔记

作者:佚名    责任编辑:admin    更新时间:2022-06-22

   Linux 下 C++/C 连接 MySQL 数据库(一)

  一、连接前准备

  原材料:Ubuntu12.04LTS

  (已经安装了MySQL5.5或者更高级版本,新立得软件包,gcc/g++或者CodeBlosks编译器)

  安装了以上的软件包后,我们可以正常使用MySQL完成数据管理工作,但是很多时候我们需要通过编写程序访问MySQL。此时,在程序中需要加载MySQL驱动头文件,但是默认这些驱动包是没有安装的,因此我们需要在新立得中找到"libmysqld-dev"包并安装。

  安装完成之后,在”/usr/include/mysql/”目录下会有很多相对应的头文件,如mysql.h等。

  当写好程序,需要编译时:

  1、如果选用的是使用gcc/g++在命令行下完成,则需要加上-lmysqlclient选项。如:

?

1 g++ -lmysqlclient mysql_test.cc -o mysqltest

  2、如果选用的是CodeBlocks,则需在构建选项中,将连接库设为mysqlclient。

  开始编译。

  二、头文件及相关函数分析

  这篇博客中所列的函数全部包含在头文件下,因此,需要在程序编写开始处,加入一行:

?

1 #include <mysql/mysql.h>

  1、用CAPI连接MySQL数据库有两个步骤:

  1)初始化一个连接句柄

  2)建立连接

  所用到的函数如下:

?

1 2 3 4 5 6 7 8 9 10 11 12 MYSQL *mysql_init(MYSQL *connection);               // 初始化连接句柄 //成功返回MySQL结构指针,失败返回NULL   MYSQL *mysql_real_connect(MYSQL *connection,                             const char *server_host,                                                    const char *sql_user_name,                            const char *sql_password,                             const char *db_name,                             unsigned int port_number,                             const char *unix_socket_name,                             unsigned int flags);  //建立连接 //成功返回MySQL结构指针,失败返回NULL

  2、MySQL连接工作完成之后,需要对MySQL的连接进行释放

?

1 2 void mysql_close(MYSQL *connection); //关闭连接 //参数connection被清空,指针变为无效

  3、mysql_options用于设置额外选项,并影响连接行为,但是它只能在mysql_init和mysql_real_connect之间调用

?

1 int mysql_options(MYSQL *connection, enum mysql_option option, const char *argument);               //设置连接选项

  option的值为下列四个值之一:

?

1 2 3 4 MYSQL_INIT_COMMAND       //连接到MySQL服务器时将执行的命令,再次连接时将自动再次执行。 MYSQL_OPT_CONNECT_TIMEOUT    //连接超时前的等待秒数 MYSQL_OPT_COMPRESS           //网络连接中使用压缩机制 MYSQL_OPT_PROTOCOL       //要使用的协议类型,影视mysql.h中定义的mysql_protocol_type枚举值之一

  4、以上的函数是在假设没有错误的情况下运行,如果数据库连接过程中出现了错误,我们就需要以下两个函数来处理错误信息:

?

1 2 unsigned int mysql_errno(MYSQL *connection);    //返回错误代码(0表示为出现错误)  char *mysql_error(MYSQL *connection);           //返回错误信息,是以NULL作为终结的字符串

  5、程序访问数据库不只是与数据库建立连接,更重要的是通过SQL语句的执行查询或改变数据库中数据。执行SQL语句可以通过下列函数实现。

?

1 int mysql_query(MYSQL *connection, const char *query);

  SQL语句分为两类,返回数据的SQL和不返回数据的SQL(UPDATE、DELETE、INSERT)。

  下面我们只介绍不返回数据的SQL

?

1 2 my_ulonglong mysql_affected_rows(MYSQL *connection);    //返回查询受影响的行 //对一段SQL语句执行后可以通过调用此函数查看SQL语句执行后,数据库中数据状态改变的行数,以此判断SQL的执行成功与否。

  三、实例

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 #include <iostream> #include <fstream> #include <cstdlib