博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux下C++访问MySQL
阅读量:7104 次
发布时间:2019-06-28

本文共 5251 字,大约阅读时间需要 17 分钟。

今天给大家演示在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,如需转载请自行联系原作者
你可能感兴趣的文章
Mesh Shading
查看>>
测试职业规划和发展----从零开始到合格的测试工程师
查看>>
UIImageView上添加UIButton,button的点击事件无法响应
查看>>
网络编程学习——Unix域协议
查看>>
队列的使用
查看>>
Java Annotation入门
查看>>
java--序列化及其算法透析
查看>>
GenMyModel:拥有代码生成功能的法国创新型UML工具来袭
查看>>
nexus 手册
查看>>
【hadoop】15.HDFS-其他功能
查看>>
照葫芦画瓢-reading files(读文件)
查看>>
HTTP协议详解(转)
查看>>
Android零基础入门第54节:视图切换组件ViewSwitcher
查看>>
083-使用shell和expect一键批量分发SSH密钥脚本
查看>>
线上采购注意了
查看>>
压缩与打包
查看>>
0037-如何在Windows Server2008搭建DNS服务并配置泛域名解析
查看>>
.net core入门之HelloWorld
查看>>
OSChina 周六乱弹 ——给媳妇打电话,一个男人的声音……
查看>>
OSChina 周一乱弹 —— 鱼生不值得
查看>>