MYSQL 操作简介

来源:互联网 发布:长虹乐视网络电视报价 编辑:程序博客网 时间:2024/05/19 17:51

//Cmake
include_directories("C:/msys64/mingw64/include/mysql")target_link_libraries(MySQL_testall mysqlclient)
#include <iostream>#include "mysql_manager.h"#include <sstream>#include <algorithm>int main(){    mysql_manager::getinstance().init(1, 100, "localhost", "root", "root", "test", 3306, NULL, 0);    auto m_sql = &*mysql_manager::getinstance().get_connect();    mysql_query(m_sql, "CREATE TABLE TAB3(ID INT PRIMARY KEY AUTO_INCREMENT NOT NULL,"            "TIME DATETIME,TITLE VARCHAR(128) NOT NULL,ARTICLE TEXT NOT NULL)");    //mysql_query(m_sql, "INSERT INTO TAB3 (TIME,TITLE,ARTICLE) VALUES(NOW(),\"First Article\",\"hello we are the world \")");    //mysql_query(m_sql, "INSERT INTO TAB3 (TIME,TITLE,ARTICLE) VALUES(NOW(),\"Second Article\",\"hello we are the world ! I am weifuliang .\")");    //mysql_query(m_sql,"SELECT * FROM TAB2");    //mysql_query(m_sql,"SELECT * FROM TAB3");    std::stringstream ss_query;    std::string str_title, str_article, str_id;    str_title = "weifuliangsucuihuang";    str_article = "12341234123412341234";    str_id = "2";    ss_query << "UPDATE TAB3 SET TIME=NOW(),TITLE='" << str_title << "',ARTICLE='" << str_article << "'WHERE ID='"<< str_id << "'" ;    mysql_query(m_sql,ss_query.str().c_str());    mysql_query(m_sql,"SELECT * FROM TAB3");    //std::shared_ptr<MYSQL> m_sql= mysql_manager::getinstance().get_connect();    //mysql_query(&(*m_sql),"CREATE TABLE COMPANY(ID INT PRIMARY KEY NOT NULL, ARTICLE TEXT NOT NULL)");    //mysql_query(&(*m_sql),"INSERT INTO COMPANY VALUES(1,\"Hello world! I am weifuliang.\")");    //mysql_query(&(*m_sql),"DELETE FROM COMPANY WHERE ID = 1");    //mysql_query(&(*m_sql),"SELECT ARTICLE FROM COMPANY");//    mysql_query(m_sql,//                "CREATE TABLE LOGIN(ID INT PRIMARY KEY NOT NULL, USERNAME VARCHAR(32) NOT NULL,PASSWORD VARCHAR(32) NOT NULL)");//    mysql_query(m_sql, "INSERT INTO LOGIN VALUES(1,\"123@qq.com\",\"123123\")");//    std::string str_name = "123@qq.com", str_password = "123123", str_query;//    str_query = "SELECT USERNAME,PASSWORD FROM LOGIN WHERE USERNAME='" + str_name + "'AND PASSWORD='" + str_password + "'";//    mysql_query(&(*m_sql), str_query.c_str());//    std::ostringstream sstream;  //#include <sstream>//    sstream<<"SELECT USERNAME,PASSWORD FROM LOGIN WHERE USERNAME='"<<str_name<<"'AND'"<<str_password<<"'";//    mysql_query(&(*m_sql),sstream.str().c_str());    //mysql_query(&(*m_sql),"CREATE table tb2(NAME VARCHAR(20),AGE INT(3))");    //mysql_query(&(*m_sql), "SELECT ID AS NAMWID FROM tb");  //列名的替换    //mysql_query(&(*m_sql), "SELECT concat(id,name) from tb");  //concat 用于连接字符串    //mysql_query(&(*m_sql), "SELECT left(name,3) from tb");  //left 用于显示字符串的前几个字符    //mysql_query(&(*m_sql), "SELECT right(name,3) from tb");  //right 用于显示字符串的后面个字符包括空格//    mysql_query(&(*m_sql), "SELECT upper(name) from tb");  //upper 用于显示字符串转换成大写    //mysql_query(&(*m_sql), "SELECT lower(name) from tb");  //lower 用于显示字符串转换成小写    // mysql_query(&(*m_sql), "SELECT substring(name,2,4) from tb");  //substring 用于显示字符串从第几个到第几个    //mysql_query(&(*m_sql), "SELECT LTRIM(name) from tb");  //LTRIM 用于删除字符串前面的空格    //mysql_query(&(*m_sql), "SELECT RTRIM(name) from tb");  //RTRIM 用于删除字符串后面的空格    //mysql_query(&(*m_sql), "SELECT NOW()");  //NOW 用于查看系统时间    //mysql_query(&(*m_sql), "SELECT date_format('2017-8-9','%d')");  //date_format 显示当月的第几天//     mysql_query(&(*m_sql), "SELECT DATEDIFF(NOW(),'2016-3-5')");  //DATEDIFF 用于求某一时间段的天数    //mysql_query(&(*m_sql), "SELECT round(123.123456789,3)");  //round 用于求某数据的精确度 保留几位小数    //mysql_query(&(*m_sql), "SELECT round(123.123456789,-1)");  //round 用于求某数据的精确度 保留几位小数  负数代表小数点左半边的    // mysql_query(&(*m_sql), "SELECT round(pi(),3)");  //round 用于求某数据的精确度 保留几位小数  pi() 代表无理数pi 3.14...    // mysql_query(&(*m_sql), "SELECT round(PI(),100)");  //round 用于求某数据的精确度 保留几位小数 pi 最多保留小数点后15位    //mysql_query(&(*m_sql), "SELECT power(2,10)");  //power 用于求某数据的次幂运算  如2的10次幂    //mysql_query(&(*m_sql), "SELECT CAST('123' AS int)");  //CAST 用于转换数据类型  但是可能在wondows 上不好使 不知道为啥 可略过哦    //mysql_query(&(*m_sql), "INSERT INTO tb VALUES(100,NULL,33)");    //mysql_query(&(*m_sql), "SELECT IFNULL(NAME,'noname') AS name FROM tb");   //IFNULL用来填充一些null的值进行一系列的替换    //mysql_query(&(*m_sql), "SELECT NAME FROM tb ORDER BY   NAME");    //  (列名 ORDER BY 列名 ) 排序 默认升序(ASC) 降序(DESC)    //mysql_query(&(*m_sql), "SELECT NAME FROM tb ORDER BY   ID,NAME ");    //  (列名 ORDER BY 列名  firstname,endname) 排序 默认升序(ASC) 降序(DESC)    MYSQL_RES *result = mysql_store_result(m_sql);    if(!mysql_num_rows(result))    {        std::cout << "Can't find ! "<< std::endl;    }    MYSQL_ROW row;    unsigned int num_fields;       //这是代表列数    unsigned int i;    num_fields = mysql_num_fields(result);     //获取列数    MYSQL_FIELD *fiedl = mysql_fetch_fields(result);    //MYSQL_FIELD_OFFSET file_offset = mysql_field_tell(result);    for (int i = 0; i < num_fields; ++i)    {        std::cout << fiedl[i].name << "  ";    }    std::cout << std::endl;    while ((row = mysql_fetch_row(result)))      //从结果集中捕获一行,给row    {        unsigned long *lengths;        lengths = mysql_fetch_lengths(result);     //返回结果集当前行的列长度;返回的ulong* 指针        std::string str_;//        for (i = 0; i < num_fields; i++)//        {////            str_ += row[i];//            std::cout << "row[ " << i<< " ] :" << row[i]<< std::endl;//        }        //std::cout << "str__ :" << str_ << std::endl;        for (i = 0; i < num_fields; i++)        {            printf("%.*s ", (int) lengths[i], row[i] ? row[i] : "NULL");   //根据每个列长度输出对应行值        }        printf("\n");    }    mysql_free_result(result); //释放结果集;//    MY_CHARSET_INFO cs;//    mysql_get_character_set_info(&*m_sql, &cs);//    //std::cout<<__CONCAT("as","asd")<<std::endl;//    std::cout << mysql_get_client_info() << std::endl;    return 0;}