Linux学习笔记
bitsCN.comLinux 下 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的执行成功与否。
三、实例
#includebitsCN.com#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); }}

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

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

常见的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支持多种编程语言等等。

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

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

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

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

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


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

记事本++7.3.1
好用且免费的代码编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

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