文档章节

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
深圳
程序员
make && make install

使用eclipse 创建C++项目,daemon service 程序。 编译时,eclipse自动生成的makefile: ################################################################################ # Automatical......

JORDANSG
2012/12/11
0
0
Linux C++、Boost、ACE ......

Linux/UNIX、C++、Boost、ACE、Shell ...... Linux/UNIX C++高级培训---远程班 培养目标:Linux/UNIX C++高级软件工程师 专注Linux/UNIX服务器端的软件开发(后台开发),培养企业所需的专业...

athxy
2010/04/01
0
1
C++零基础教程之类和对象初识

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

这个人很懒什么都没留下
09/03
0
0
《鸡啄米C++编程入门系列》系列技术文章整理收藏

《鸡啄米C++编程入门系列》系列技术文章整理收藏 1鸡啄米:C++编程入门系列之前言 http://www.lai18.com/content/410454.html 2鸡啄米:C++编程入门系列之一(进制数) http://www.lai18.com...

开元中国2015
2015/06/27
0
0
FFLIB之FFLUA——C++嵌入Lua&扩展Lua利器

摘要: 在使用C++做服务器开发中,经常会使用到脚本技术,Lua是最优秀的嵌入式脚本之一。Lua的轻量、小巧、概念之简单,都使他变得越来越受欢迎。本人也使用过python做嵌入式脚本,二者各有特...

知然
2013/01/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS 7.* 配置网络

配置静态IP 进入配置文件目录 cd /etc/sysconfig/network-scripts 查找以 ifcfg-eno 开头的文件并编辑它 vi ifcfg-ens32 修改文件中的变量值 BOOTPROTO=staticONBOOT=yesIPADDR=192.168...

阿白
43分钟前
0
0
深入理解OAuth2.0协议

1. 引言 如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间。是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题。豪车一般配备两种钥匙:主钥匙和泊...

xtof
47分钟前
1
0
Linux学习-0920

3.4 usermod命令 3.5 用户密码管理 3.6 mkpasswd命令 一、usermode命令 usermode作用是用来修改用户信息。 方法: usermod 参数 username 示例1:修改用户uid usermod -u 1010 test5 示例2...

wxy丶
57分钟前
1
0
synchronized锁对象的坑

今天本来写点其他东西,碰巧写了一下synchronized,没想到掉坑里面了,大佬别笑。 起初代码大概是这样的: package com.ripplechan.part_1_2_3;import java.util.concurrent.CountDownL...

RippleChan
今天
1
0
XAMPP环境搭建(Apache + MariaDB + PHP + Perl)

operation system:ubuntu-18.04.1 step1:download XAMPP #sudo wget https://www.apachefriends.org/xampp-files/7.2.9/xampp-linux-x64-7.2.9-0-installer.run step2:install XAMPP #sudo ......

硅谷课堂
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部