我可以: 邀请好友来看>>
ZOL星空(中国) > 技术星空(中国) > C/C++星空(中国) > Linux下C++访问MySQL
帖子很冷清,卤煮很失落!求安慰
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

Linux下C++访问MySQL

33浏览 / 0回复

蚁走天涯路

蚁走天涯路

0
精华
10
帖子

等  级:Lv.3
经  验:1076
  • Z金豆: 0

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:北京
  • 注  册:2017-05-16
  • 登  录:2021-09-05
  • 初领任务
  • 新手毕业
发表于 2017-05-31 16:40:02
电梯直达 确定
楼主

今天,北京上课了的讲师给大家演示在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
#include
#include
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
#include
#include

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
#include
#include

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
#include
#include

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
#include
#include

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
#include
#include

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 << "tt";
    }
    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
#include
#include

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 << "tt";
    }
    cout << endl;
    MYSQL_ROW row = NULL;
    row = mysql_fetch_row(result);
    while(NULL != row)
    {
     for(int i=1; i     {
        cout << row << "tt";
     }
     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




高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表