文档章节

c++ 访问mysql

彼得
 彼得
发布于 2013/07/17 20:49
字数 814
阅读 29
收藏 0
点赞 0
评论 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
博文 121
码字总数 38726
作品 0
深圳
程序员
C语言/C++编程学习强势之处的体现

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 05/12 ⋅ 0

Java程序员如何高效而优雅地入门C++

Java程序员如何高效而优雅地入门Cpp,由于工作需要,需要用C++写一些模块。关于C++ 的知识结构,虽说我有过快速学习很多新语言的经验,但对于C++ 我也算是老手,但也还需要心生敬畏,本文会从...

小欣妹妹 ⋅ 04/23 ⋅ 0

如何自学成为C/C++程序员大牛

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 05/11 ⋅ 0

什么是 C 和 C ++ 标准库?

简要介绍编写C/C ++应用程序的领域,标准库的作用以及它是如何在各种操作系统中实现的。 我已经接触C++一段时间了,一开始就让我感到疑惑的是其内部结构:我所使用的内核函数和类从何而来? ...

oschina ⋅ 04/10 ⋅ 0

C语言/C++程序员编程学习自信心曲线图

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 05/10 ⋅ 0

VS2010/MFC编程入门教程之目录和总结(鸡啄米)

鸡啄米的这套VS2010/MFC编程入门教程到此就全部完成了,虽然有些内容还未涉及到,但帮助大家进行VS2010/MFC的入门学习业已足够。以此教程的知识为基础,学习VS2010/MFC较为深入的内容已非难事...

weixin_40647819 ⋅ 05/23 ⋅ 0

C++ STL学习——stack

栈是最为常用的数据结构了,很多算法都是依靠栈来实现的,比如递归。我们要手动来实现栈,显得十分繁琐和麻烦,而且复用性不好。C++ 的STL中已经帮我们封装好了栈,我们只要方便的进行调用即...

chenyufeng1991 ⋅ 2016/08/22 ⋅ 0

C语言/C++永远都不会过时的编程语言

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 03/30 ⋅ 0

《C++ primer》读后感:时代的经典

说起Lippman的C++ Primer,我总是有种特殊感情。这本书既是我进入C++领域的敲门砖,也是我第一次在网络上发表技术文章的对象。当年读书笔记中的青涩迷惘和年少轻狂都还历历在目,转眼已经从第...

凌杰_owlman ⋅ 05/15 ⋅ 0

C语言/C++编程学习未来之路

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 03/30 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

对于程序员的招聘问题,作为软件人的一些吐槽和建议

作为软件人,找工作有时候似乎挺苦逼的。 说真的,让我去掉前面这句中“似乎”二字吧。就是苦逼!很多人都曾抱怨处在招聘的一方很糟糕——我们没有任何可靠的方式来甄别会写代码并且写得好的...

老道士 ⋅ 24分钟前 ⋅ 0

HDFS原理学习

一、概述 1、 Hadoop整合了众多的文件系统,首先提供了一个高层的文件系统抽象org.apache.hadoop.fs.FileSystem。然后有各个文件系统的实现类。 2、Hadoop是JAVA编写的,不同文件系统之间的交...

cjxcloud ⋅ 28分钟前 ⋅ 0

Linux下MySQL表名不区分大小写的设置方法(抄袭别人的)

Linux下MySQL表名不区分大小写的设置方法 MySQL表名不区分大小写的设置方法 在用centox安装mysql后,把项目的数据库移植了过去,发现一些表的数据查不到,排查了一下问题,最后发现是表名的大...

随风而浮沉 ⋅ 33分钟前 ⋅ 0

ubuntu下安装宋体simsun

sudo cp simsun.ttc /usr/share/fonts cd /usr/share/fonts sudo chmod 644 simsun.ttc 更新字体缓存: 代码: sudo mkfontscale 代码: sudo mkfontdir 代码: sudo fc-cache -fsv 安装chrome扩......

wangxuwei ⋅ 35分钟前 ⋅ 0

利用 ssh 传输文件

Linux 下一般可以用 scp 命令通过 ssh 传送文件: #把服务器上的 /home/user/a.txt 发送到本机的 /var/www/local_dir 目录下scp username@servername:/home/user/a.txt /var/www/local_dir...

大灰狼时间 ⋅ 45分钟前 ⋅ 0

web3j教程:android和java程序员如何使用web3j开发区块链以太坊

如何使用web3j为Java应用或Android App增加以太坊区块链支持,本教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤...

智能合约 ⋅ 今天 ⋅ 0

web3j开发java或android以太坊智能合约快速入门

web3j简介 web3j是一个轻量级、高度模块化、响应式、类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成。 可以通过它进行以太坊区块链...

笔阁 ⋅ 今天 ⋅ 0

一起读书《深入浅出nodejs》-异步I/O

异步I/O “异步”这个名词其实很早就诞生了,但它大规模流行却是在Web 2.0浪潮中,它伴随着AJAX的第一个A(Asynchronous)席卷了Web。 为什么要异步I/O 关于异步I/O为何在Node里如此重要,这与...

小草先森 ⋅ 今天 ⋅ 0

JVM各种问题

1、如果启动什么都不设,会怎样? 先来看一个命令 [root@localhost bin]# java -XX:+PrintCommandLineFlags -version -XX:InitialHeapSize=29899008 -XX:MaxHeapSize=478384128 -XX:+PrintCo......

算法之名 ⋅ 今天 ⋅ 0

SAS笔记-宏2

宏是一种文本,一般来说其编译是在程序执行之前。 宏变量的创建 %let语句 %let macro_variables = text; %let是常见的宏变量建立方式,其编译就在执行前。如下例中,想要宏变量test等于数据集...

tonorth123 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部