zoukankan      html  css  js  c++  java
  • Linux下C++访问MySQL Art_Hero 51CTO技术博客

    Linux下C++访问MySQL - Art_Hero - 51CTO技术博客

    Linux下C++访问MySQL
    2011-04-01 16:39:16
    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://curran.blog.51cto.com/2788306/533169
    今天给大家演示在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” 博客,请务必保留此出处http://curran.blog.51cto.com/2788306/533169

  • 相关阅读:
    Redis最佳实践:7个维度+43条使用规范,带你彻底玩转Redis | 附实践清单
    laravel生命周期
    日志写入
    商城表设计
    10个你不一定知道的PHP内置函数
    PHP函数详解:call_user_func()使用方法
    Dingo与JWT的使用
    商城-会员与用户的数据表设计
    MVVM模式
    vue面试题
  • 原文地址:https://www.cnblogs.com/lexus/p/2945960.html
Copyright © 2011-2022 走看看