搜索
首页数据库mysql教程MySQL学习笔记_11_Linux下C++/C连接MySQL数据库(一)_MySQL

Linux学习笔记

bitsCN.com

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选项。如:

g++ -lmysqlclient mysql_test.cc -o mysqltest

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

开始编译。

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

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

#include <mysql/mysql.h>

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

1)初始化一个连接句柄

2)建立连接

所用到的函数如下:

MYSQL *mysql_init(MYSQL *connection);				// 初始化连接句柄//成功返回MySQL结构指针,失败返回NULLMYSQL *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的连接进行释放

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

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

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

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

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

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

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

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

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

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

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

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

三、实例

#include #include #include #include <mysql/mysql.h>using namespace std;void mysql_err_function(MYSQL * connection);int main(){	//freopen("input.txt","r",stdin);    MYSQL * connection;    connection = mysql_init(NULL);    if (!connection)    {        cout << "mysql_init failed!" << endl;        exit(-1);    }    if (!mysql_real_connect(connection,"localhost","root","123456","test",0,NULL,0))    {        cout << "Connection To MySQL failed!" << endl;        mysql_err_function(connection);    }    cout << "Connection To MySQL Server is Success..." << endl;    string str;    getline(cin,str);    int res = 0;    int affected_count = 0;    while (str != "close" && str != "" && !res)    {        res = mysql_query(connection,str.c_str());        affected_count += mysql_affected_rows(connection);        if (res)        {            if (mysql_errno(connection))            {                cout << "Error " << mysql_errno(connection) << " : "                     << mysql_error(connection) << '/n' << endl;                break;            }        }        getline(cin,str);    }    cout << "Have affected " << affected_count << " rows!" << endl;    mysql_close(connection);    cout << "Connection To MySQL Server is closed..." << endl;    return 0;}void mysql_err_function(MYSQL * connection){    if (mysql_errno(connection))    {        cout << "Error " << mysql_errno(connection) << " : "             << mysql_error(connection) << endl;        exit(-1);    }}
bitsCN.com
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
C语言编程必备软件:五个推荐给初学者的好帮手C语言编程必备软件:五个推荐给初学者的好帮手Feb 20, 2024 pm 08:18 PM

C语言作为一门基础而重要的编程语言,对于初学者来说,选择合适的编程软件是非常重要的。在市场上有许多不同的C语言编程软件可供选择,但对于初学者来说,适合自己的选择可能有些困惑。本文将推荐给初学者的五个C语言编程软件,帮助他们快速入门和提高编程能力。Dev-C++Dev-C++是一款免费开源的集成开发环境(IDE),特别适合初学者使用。它简单易用,集成了编辑器、

Golang编译器汇总:探究各类编译器优缺点Golang编译器汇总:探究各类编译器优缺点Jan 19, 2024 am 10:44 AM

随着Golang的发展,越来越多的编译器被开发出来。在选择一款编译器时,开发人员需要考虑诸多因素,例如可靠性、性能、易用性等。本篇文章将汇总一些常见的Golang编译器,并探究它们的优缺点,帮助开发者更好地选择适合自己的编译器。Go官方编译器Go官方编译器是Golang的默认编译器,也是Golang社区中被广泛认可的编译器。它具有以下优点:稳定性好体积小编译

c语言编译器有哪些c语言编译器有哪些Jan 26, 2024 pm 12:08 PM

常见的C语言编译器:1、GCC;2、Clang;3、Microsoft Visual C++ Compiler;4、Intel C++ Compiler;5、TinyCC (TCC);6、Pelles C;7、Borland C++ Compiler;8、Solaris Studio;9、IBM XL C/C++ Compiler。详细介绍:1、GCC支持多种编程语言等等。

数据库系统的构成包括哪些数据库系统的构成包括哪些Jul 15, 2022 am 11:58 AM

数据库系统由4个部分构成:1、数据库,是指长期存储在计算机内的,有组织,可共享的数据的集合;2、硬件,是指构成计算机系统的各种物理设备,包括存储所需的外部设备;3、软件,包括操作系统、数据库管理系统及应用程序;4、人员,包括系统分析员和数据库设计人员、应用程序员(负责编写使用数据库的应用程序)、最终用户(利用接口或查询语言访问数据库)、数据库管理员(负责数据库的总体信息控制)。

C++ 函数性能优化中的编译器选项配置指南C++ 函数性能优化中的编译器选项配置指南Apr 23, 2024 am 11:09 AM

最佳的C++函数性能优化编译器选项为:优化级别:O2函数内联:-finline-functions循环展开:-funroll-loops自动矢量化:-ftree-vectorize线程化:-fopenmp

access数据库的结构层次是什么access数据库的结构层次是什么Aug 26, 2022 pm 04:45 PM

结构层次是“数据库→数据表→记录→字段”;字段构成记录,记录构成数据表,数据表构成了数据库。数据库是一个完整的数据的记录的整体,一个数据库包含0到N个表,一个表包含0到N个字段,记录是表中的行。

mysql查询慢的因素除了索引,还有什么?mysql查询慢的因素除了索引,还有什么?Jul 19, 2022 pm 08:22 PM

mysql查询为什么会慢,关于这个问题,在实际开发经常会遇到,而面试中,也是个高频题。遇到这种问题,我们一般也会想到是因为索引。那除开索引之外,还有哪些因素会导致数据库查询变慢呢?

数据库的什么是指数据的正确性和相容性数据库的什么是指数据的正确性和相容性Jul 04, 2022 pm 04:59 PM

数据库的“完整性”是指数据的正确性和相容性。完整性是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。完整性对于数据库系统的重要性:1、数据库完整性约束能够防止合法用户使用数据库时向数据库中添加不合语义的数据;2、合理的数据库完整性设计,能够同时兼顾数据库的完整性和系统的效能;3、完善的数据库完整性有助于尽早发现应用软件的错误。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。