Linux下C++访问MySQL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:
今天给大家演示在linux下如果用C++操作mysql
1:安装MySQL
挂载光盘:
mkdir /cdrom
mount /dev/hdc /cdrom
cd /cdrom/Server
rpm -ivh perl-DBI-1.52-2.el5.i386.rpm
rpm -ivh mysql-5.0.45-7.el5.i386.rpm mysql-bench-5.0.45-7.el5.i386.rpm mysql-devel-5.0.45-7.el5.i386.rpm
rpm -ivh perl-DBD-MySQL-3.0007-2.el5.i386.rpm
rpm -ivh mysql-server-5.0.45-7.el5.i386.rpm mysql-test-5.0.45-7.el5.i386.rpm
查看mysql服务状态:
service mysqld status
启动服务:
service mysqld start
连接数据库:
mysql
2:安装gcc工具包
rpm -ivh gcc* --force --nodeps 强制安装
3:进入mysql
create table t1 (id  int,name varchar(30));
t1表插入数据:
1.cpp
#include <iostream>
#include <mysql/mysql.h>
#include <string>
using namespace std;
main() 
{
     MYSQL mysql;
     mysql_init(&mysql);
     mysql_real_connect(&mysql,  "localhost""root""root""test", 3306, NULL, 0);
     string sql =  "insert into t1 (id, name) values (1, 'java1');";
     mysql_query(&mysql, sql.c_str());
     mysql_close(&mysql);
}
g++ -o 1.out 1.cpp -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql
 更新mysql数据;
1.cpp
#include <iostream>
#include <mysql/mysql.h>
#include <string>

using namespace std;

main()
{
     MYSQL mysql;
     mysql_init(&mysql);
     mysql_real_connect(&mysql,  "localhost""root""root""test", 3306, NULL, 0);
     string sql =  "insert into t1 (id,name) values (2, 'java2'),(3, 'java3');";
     mysql_query(&mysql, sql.c_str());
     sql =  "update t1 set name = 'java33' where id = 3;";
     mysql_query(&mysql, sql.c_str());
     mysql_close(&mysql);
}
g++ -o 1.out 1.cpp -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql
./1.out
 mysql 存储过程:
mysql>delimiter  //
        >create procedure p01()
        >begin
        >insert into t1 (id,name) values (66, 'java66');
        >end;
        > //
应用存储过程:
mysql>delimiter  //
        >create procedure p01()
        >begin
        >insert into t1 (id,name) values (66, 'java66');
        >end;
        > //
触发器:
新建t2表:
mysql>delimiter  //
     >create trigger tr1 after insert on t1  for each row
     >begin
     >insert into t2 (id,name) values ( new.id, new.name);
     >end;
     > //
     >delete from t1 where id = 66;
     > //
     >delimeter ;
vi 3.cpp
#include <iostream>
#include <string>
#include <mysql/mysql.h>

using namespace std;

main()
{
    MYSQL mysql;
    mysql_init(&mysql);
    mysql_real_connect(&mysql,  "localhost""root""root", 3306, NULL, 0);
    string sql =  "call p01();";
    mysql_query(&mysql, sql.c_str());
    mysql_close(&mysql);
}

g++ -o 3.out 3.cpp -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql
./3.out
mysql>delimeter ;
     >select * from t1;
     >select * from t2;
     >存在数据(66, 'java66')
查看表中数据的总数:
vi 4.cpp
#include <iostream>
#include <string>
#include <mysql/mysql.h>

using namespace std;

main()
{
    MYSQL mysql;
    MYSQL_RES *result = NULL;
    mysql_init(&mysql);
    mysql_real_connect(&mysql,  "localhost""root""root""test", 3306, NULL, 0);
    string sql =  "select id,name from t1;";
    mysql_query(&mysql, sql.c_str());
    result = mysql_store_result(&mysql);
     int rowcount = mysql_num_rows(result);
    cout << rowcount << endl;
    mysql_close(&mysql);
}

g++ -o 4.out 4.cpp -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql
./4.out
查处字段的总数:
vi 5.cpp
#include <iostream>
#include <string>
#include <mysql/mysql.h>

using namespace std;

main()
{
    MYSQL mysql;
    MYSQL_RES *result = NULL;
    mysql_init(&mysql);
    mysql_real_connect(&mysql,  "localhost""root""root", 3306, NULL, 0);
    string str =  "select id,name from t1;";
    mysql_query(&mysql, sql.c_str());
    result = mysql_store_result(&mysql);
     int rowcount = mysql_num_rows(result);
    cout << rowcount << endl;
     int fieldcount = mysql_num_fields(result);
    cout << fieldcount << endl;
    mysql_close(&mysql);
}

g++ -o 5.out 5.cpp -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql
./5.out
列出具体字段名:
vi 6.cpp
#include <iostream>
#include <string>
#include <mysql/mysql.h>

using namespace std;

main()
{
    MYSQL mysql;
    MYSQL_RES *result = NULL;
    MYSQL_FIELD *field = NULL;
    mysql_init(&mysql);
    mysql_real_connect(&mysql,  "localhost""root""root""test", 3306, NULL, 0);
    string str =  "select id,name from t1;";
    mysql_query(&mysql, sql.c_str());
    result = mysql_store_result(&mysql);
     int rowcount = mysql_num_rows(result);
    cout << rowcount << endl;
     int fieldcount = mysql_num_fields(result);
    cout << fieldcount << endl;
     for( int i = 0; i < fieldcount; i++)
    {
     field = mysql_fetch_field_direct(result,i);
     cout << field->name <<  "\t\t";
    }
    cout << endl;
    mysql_close(&mysql);
}

g++ -o 6.out 6.cpp -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql
./6.out
显示表中所有数据:
vi 7.cpp
#include <iostream>
#include <string>
#include <mysql/mysql.h>

using namespace std;

main()
{
    MYSQL mysql;
    MYSQL_RES *result = NULL;
    MYSQL_FIELD *field = NULL;
    mysql_init(&mysql);
    mysql_real_connect(&mysql,  "localhost""root""root", 3306, NULL, 0);
    string str =  "select id,name from t1;";
    mysql_query(&mysql, sql.c_str());
    result = mysql_store_result(&mysql);
     int rowcount = mysql_num_rows(result);
    cout << rowcount << endl;
     int fieldcount = mysql_num_fields(result);
    cout << fieldcount << endl;
     for( int i = 0; i < fieldcount; i++)
    {
     field = mysql_fetch_field_direct(result,i);
     cout << field->name <<  "\t\t";
    }
    cout << endl;
    MYSQL_ROW row = NULL;
    row = mysql_fetch_row(result);
     while(NULL != row)
    {
      for( int i=1; i<fieldcount; i++)
     {
        cout << row[i] <<  "\t\t";
     }
     cout << endl;
     row = mysql_fetch_row(result);
    }
    mysql_close(&mysql);
}

g++ -o 7.out 7.cpp -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql

./out









本文转自 Art_Hero 51CTO博客,原文链接:http://blog.51cto.com/curran/533169,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
4月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
288 41
|
4月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
382 17
|
4月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
113 18
|
4月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
315 11
|
4月前
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
125 10
|
5月前
|
关系型数据库 MySQL Linux
查看Linux、Apache、MySQL、PHP版本的技巧
以上就是查看Linux、Apache、MySQL、PHP版本信息的方法。希望这些信息能帮助你更好地理解和使用你的LAMP技术栈。
273 17
|
5月前
|
Oracle 关系型数据库 MySQL
Oracle linux 8 二进制安装 MySQL 8.4企业版
Oracle linux 8 二进制安装 MySQL 8.4企业版
162 1
|
Linux C++
C++ 调用Linux系统命令
一个简单的C++程序,Test函数用来测试调用Linux的系统命令ls -l #include #include #include #include #include #include using namespace std; const i...
2276 0
|
7月前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
3月前
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
83 0