文档章节

c++ 访问mysql

彼得
 彼得
发布于 2013/07/17 20:49
字数 814
阅读 29
收藏 0

今天给大家演示在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

本文转载自:http://curran.blog.51cto.com/2788306/533169

共有 人打赏支持
彼得

彼得

粉丝 39
博文 122
码字总数 38726
作品 0
深圳
程序员
私信 提问
OOS 0.2.0 发布,C++ 的 ORM 框架

OOS 0.2.0 发布,此版本添加了对 MS SQL Server 的支持;改进了 MySQL 后端的性能;修复了一些 bug。 OOS 是一个 C++ 的 ORM 框架。旨在封装所有数据库后端功能,并对开发者提供统一的访问 ...

oschina
2014/01/11
1K
0
坑爹的MYSQL CONNECTOR C++

近来要开发C++连接mysql的一个模块,首先在官网上下了一个Connector C++ 1.1.0,发现竟然要用到boost库...为了一个连接组件,竟然要安装整个boost,而且看了下Connector的源代码,发现竟然只...

xinzaibing
2012/07/24
3.6K
5
这么多人晒简历,我也来一个,赶紧喷吧。。。

计算机语言: 熟练: C/C++ (10年) 掌握: Java、 C#(WPF)、Python、 Pascal、awk, scala、F#、Linux Bash Shell等语言,并能用于辅助C/C++,提高工作效率。 C/C++语言库(熟练的掌握) ST...

newzai
2013/09/16
4.6K
38
C++零基础教程之类和对象初识

C++ 类和对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,它包含了数据表示法和用于处理...

这个人很懒什么都没留下
09/03
0
0
是技术太次,还是要得太高。面试屡屡失败!

先来个背景介绍。 本人计算机科学与技术专业,C++方向,2013年毕业。非211,非985,但是在学校期间主攻技术,基础和知识面还是不错的。从C、C++、C#、java、php、Qt都有接触,数据库、多线程...

changnet
2015/04/25
2.6K
16

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud Stream消费失败后的处理策略(四):重新入队(RabbitMQ)

应用场景 之前我们已经通过《Spring Cloud Stream消费失败后的处理策略(一):自动重试》一文介绍了Spring Cloud Stream默认的消息重试功能。本文将介绍RabbitMQ的binder提供的另外一种重试...

程序猿DD
20分钟前
0
0
kiss原则

KISS 原则是用户体验的高层境界,简单地理解这句话,就是要把一个产品做得连白痴都会用,因而也被称为“懒人原则”。换句话说来,”简单就是美“。KISS 原则源于 David Mamet(大卫马梅)的电...

NB-One
22分钟前
4
0
MYSQL事务处理

INNODB 事务里,所有表引擎必须为INNODB,在非实务表上操作,不会警告,不会报错,但没有效果

关元
今天
3
0
cmake 编译脚本

#!/bin/sh test -d build || mkdir -p build cd build cmake .. make

shzwork
今天
2
0
从零开始实现Vue简单的Toast插件

概述: 在前端项目中,有时会需要通知、提示一些信息给用户,尤其是在后台系统中,操作的正确与否,都需要给与用户一些信息。 1. 实例 在Vue组件的methods内,调用如下代码 `this``.$toast({...

前端小攻略
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部