翼度科技»论坛 编程开发 mysql 查看内容

MySQL C连接与使用

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
目录

使用C语言连接

mysql操作是线程安全的(事务)
以API路线认识mysql API的使用.
库的安装

如果是通过yum等安装方式安装的mysql,则在安装过程mysql开发包一般也安装好了,因此推荐这种方式安装mysql;
安装好后开发头文件目录位于/usr/include/mysql,库位于/usr/lib64/mysql
如果没有找到,说明可能没有安装,可以手动命令安装:
  1. yum install -y mysql-community-devel                        ## 开发包
复制代码
也可以单独下载mysql连接工具,MySQL :: Download MySQL Connector/C++ (Archived Versions);注意,如果能找到对应的版本是最好,不过现在旧版本官网可能不显示了,这个也无妨,mysql对新版本是能做到前后兼容的,因此可以下载推荐的8.x版本.这种方法缺点就是比较繁琐,还可能出现兼容性问题等,因此不是很推荐.
对下载下来的包中,目前最重要的是include文件夹与lib文件夹,有这两个目录就能C/C++连接数据库与开发.(需要动静态库系列知识)
linux generic: 通用版
C API

MySQL官方C接口声明
MySQL C 结构体
mysql_init

MySQL :: MySQL 5.7 C API Developer Guide :: 5.4.54 mysql_real_connect()
  1. MYSQL* mysql_init(MYSQL *mysql);
复制代码
顾名思义,对 MYSQL* 对象进行初始化.
mysql_real_connect

MySQL :: MySQL 5.7 C API Developer Guide :: 5.4.54 mysql_real_connect()
  1. MYSQL *mysql_real_connect(
  2.          MYSQL *mysql,               // 输出型参数:成功则返回mysql访问句柄,错误返回NULL;
  3.          const char *host,           // mysqld的ip
  4.         const char *user,           // 登录的用户名
  5.         const char *passwd,         // 登录密码
  6.         const char *db,             // 连接的数据库
  7.         unsigned int port,          // mysqld端口号
  8.         const char *unix_socket,    // 域间套接字(类似进程间管道通信)
  9.         unsigned long clientflag);  // 位图,启用一些特性;一般使用默认就好,即0
复制代码
注意:
需要先使用mysql_init初始化MYSQL*对象.
返回值
如果连接成功,则使用MYSQL*连接处理程序,如果连接不成功,则为NULL。对于成功的连接,返回值与第一个参数的值相同。
mysql_close

MySQL :: MySQL 5.7 C API Developer Guide :: 5.4.5 mysql_close()
  1. void mysql_close(MYSQL *mysql);
复制代码
关闭
mysql_query

MySQL :: MySQL 5.7 C API Developer Guide :: 5.4.53 mysql_query()
  1. int mysql_query(
  2.                          MYSQL *mysql,
  3.       const char *stmt_str);
复制代码
注意:
官方文档中描述说到,不用在sql语句后面加上';'和'\G'
返回值:
成功返回0,失败返回错误码
模拟实现一个简单的MySQL客户端:
[code]#include#include#include#include#include#include/*MYSQL *mysql_real_connect(        MYSQL *mysql,               // 输出型参数:成功则返回mysql访问句柄,错误返回NULL        const char *host,           // mysqld的ip        const char *user,           // 登录的用户名        const char *passwd,         // 登录密码        const char *db,             // 连接的数据库        unsigned int port,          // mysqld端口号        const char *unix_socket,    // 域间套接字(类似进程间管道通信)        unsigned long clientflag);  // 位图,启用一些特性;一般使用默认就好,即0 */const std::string host = "127.0.0.1";const std::string user = "chj";const std::string passwd = "123456";const std::string db = "test_db";const unsigned int port = 3306;//const std::string socket = ;const unsigned long clientflag = 0;int main(){  std::cout

举报 回复 使用道具