• C++ mysql create store procedure and call sp


    //Create Store Procedure via below sql statement
    //

    //Create Procedure Sp_InsertIntoBookTable6( bId varchar(40), bAuthor varchar(40), bTitle varchar(40), bISBN varchar(40), bComment longblob) BEGIN insert into BookTable1(BookId,BookAuthor,BookTitle,BookISBN,BookComment) VALUES (bId,bAuthor,bTitle,bISBN,bComment); END";


    #include <iostream> #include <stdlib.h> #include <stdio.h> #include <mysql_connection.h> #include <cppconn/driver.h> #include <cppconn/exception.h> #include <cppconn/resultset.h> #include <cppconn/statement.h> #include <mysql_driver.h> #include <cppconn/prepared_statement.h> #include <uuid/uuid.h> #include <sstream> void createSQL() { try { sql::Connection *conn; sql::Statement *stmt; string tableName = "BookTable1"; conn = getMySQLConn(); conn->setSchema("MyDB"); string createSQL = "create table " + tableName + "(ID int primary key auto_increment," "BookId varchar(40) not null," "BookAuthor varchar(40)," "BookTitle varchar(40)," "BookISBN varchar (40)," "BookComment longblob);"; string createSP="Create Procedure Sp_InsertIntoBookTable6( bId varchar(40), bAuthor varchar(40), bTitle varchar(40), bISBN varchar(40), bComment longblob) BEGIN insert into BookTable1(BookId,BookAuthor,BookTitle,BookISBN,BookComment) VALUES (bId,bAuthor,bTitle,bISBN,bComment); END"; stmt = conn->createStatement(); bool isCreated = stmt->execute(createSP); sleep(1); delete stmt; delete conn; } catch (const sql::SQLException &e) { cout << "#ERR:SQLException in " << __FILE__ << ",function in " << __FUNCTION__ << " on line " << __LINE__ << endl; cout << "#ERR:" << e.what() << endl; cout << "(MySQL error code: " << e.getErrorCode() << endl; cout << "SQLState:" << e.getSQLState() << endl; } } sql::Connection *getMySQLConn() { sql::mysql::MySQL_Driver *driver; sql::Connection *conn; driver = sql::mysql::get_mysql_driver_instance(); conn = driver->connect("tcp://127.0.0.1:3306", "username", "password"); return conn; } int main() { createSQL(); }

    Compile

    g++ -g -std=c++11 -I .../include -L .../lib64 h1.cpp -lmysqlcppconn -luuid  -o h1

    Run ./h1

    Run the below sql statement and show result:

    show procedure status where db='MyDB';

    The Part 2 will call customized  store procedure with parameters;

    void sp7()
    {
    sql::Connection *conn = getMySQLConn();
    sql::PreparedStatement *prepStmt;
    string tableName = "BookTable1";
    conn->setSchema("MyDB");
    prepStmt=conn->prepareStatement("CALL Sp_InsertIntoBookTable6(?,?,?,?,?)");
    struct bookStruct *p;
    p = bsArrayP5();
    std::stringstream ss;
    for (int i = 0; i < 100; i++)
    {
    prepStmt->setString(1,(p+i)->BookId);
    prepStmt->setString(2,(p+i)->BookAuthor);
    prepStmt->setString(3,(p+i)->BookTitle);
    prepStmt->setString(4,(p+i)->BookISBN);
    ss=stringstream((p+i)->BookComment);
    prepStmt->setBlob(5,&ss);
    prepStmt->execute();
    ss=stringstream();
    }
    }

    #include <iostream>
    #include <stdlib.h>
    #include <stdio.h>
    #include <mysql_connection.h>
    #include <cppconn/driver.h>
    #include <cppconn/exception.h>
    #include <cppconn/resultset.h>
    #include <cppconn/statement.h>
    #include <mysql_driver.h>
    #include <cppconn/prepared_statement.h>
    #include <uuid/uuid.h>
    #include <sstream>
    
    using namespace std;
    
    struct bookStruct
    {
        char *BookId;
        char *BookAuthor;
        char *BookISBN;
        char *BookTitle;
        char *BookComment;
    };
    
    
    void retrieveUuid(char *uuidValue)
    {
        uuid_t newUUID;
        uuid_generate(newUUID);
        uuid_unparse(newUUID, uuidValue);
    }
    
    sql::Connection *getMySQLConn()
    {
        sql::mysql::MySQL_Driver *driver;
        sql::Connection *conn;
        driver = sql::mysql::get_mysql_driver_instance();
        conn = driver->connect("tcp://127.0.0.1:3306", "username", "password");
        return conn;
    }
    
    
    struct bookStruct *bsArrayP5()
    {
        static struct bookStruct arr[100];
        for (int i = 0; i < 100; i++)
        {
            struct bookStruct bs;
            bs.BookId = (char *)malloc(40);
            retrieveUuid(bs.BookId);
            bs.BookAuthor = (char *)malloc(40);
            retrieveUuid(bs.BookAuthor);
            bs.BookTitle = (char *)malloc(40);
            retrieveUuid(bs.BookTitle);
            bs.BookISBN = (char *)malloc(40);
            retrieveUuid(bs.BookISBN);
            bs.BookComment = (char *)malloc(40);
            retrieveUuid(bs.BookComment);
            arr[i] = bs;
        }
    
        struct bookStruct *p;
        p = arr;
        return p;
    }
    
    
    void sp7()
    {
        sql::Connection *conn = getMySQLConn();
        sql::PreparedStatement *prepStmt;
        string tableName = "BookTable1";
        conn->setSchema("MyDB");
        prepStmt=conn->prepareStatement("CALL Sp_InsertIntoBookTable6(?,?,?,?,?)");
         struct bookStruct *p;
        p = bsArrayP5();
        std::stringstream ss;
        for (int i = 0; i < 100; i++)
        {
            prepStmt->setString(1,(p+i)->BookId);
            prepStmt->setString(2,(p+i)->BookAuthor);
            prepStmt->setString(3,(p+i)->BookTitle);
            prepStmt->setString(4,(p+i)->BookISBN);        
            ss=stringstream((p+i)->BookComment);
            prepStmt->setBlob(5,&ss);
            prepStmt->execute();
            ss=stringstream();
        }
    }
    
    
    int main()
    {
        sp7();
        return 0;
    }

    Compile and run

    g++ -g -std=c++11 -I .../include -L .../lib64 h1.cpp -lmysqlcppconn -luuid  -o h1
    ./h1

  • 相关阅读:
    IP地址、手机归属和身份证查询接口
    如何用SQL语句给表增加字段? 如何分区视图?
    屏蔽IE的图片工具条,防止图片被轻易保存的一种方法
    转 无依赖Office资源的导入导出
    Asp.Net Winform 条形码系列之Code39 Code39 Of .Net BarCode Serial Blog
    搬家了。。
    POJ 3162 Walking Race(dfs+单调队列)
    HDOJ 4389 X mod f(x) (数位DP)
    POJ 1947 Rebuilding Roads(树DP)
    POJ 1155 TELE(二分+树DP)
  • 原文地址:https://www.cnblogs.com/Fred1987/p/15633584.html
Copyright © 2020-2023  润新知