国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【MySQL】使用C++連接數(shù)據(jù)庫

這篇具有很好參考價值的文章主要介紹了【MySQL】使用C++連接數(shù)據(jù)庫。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

前置工作

  1. 創(chuàng)建數(shù)據(jù)庫并選中
mysql> create database conn;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| conn               |
+--------------------+
2 rows in set (0.00 sec)

mysql> use conn
Database changed
  1. 創(chuàng)建表并描述表結(jié)構(gòu)
mysql> create table user( id int primary key auto_increment, name varchar(32) not null, age int not null, telphone varchar(32) unique);
Query OK, 0 rows affected (0.06 sec)

mysql> show tables;
+----------------+
| Tables_in_conn |
+----------------+
| user           |
+----------------+
1 row in set (0.00 sec)

mysql> desc user;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| name     | varchar(32) | NO   |     | NULL    |                |
| age      | int(11)     | NO   |     | NULL    |                |
| telphone | varchar(32) | YES  | UNI | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

代碼

#include <iostream>
#include <string>
#include <mysql/mysql.h>

const std::string host = "127.0.0.1";
const std::string user = "connector";
const std::string password = "123456";
const std::string db = "conn";
const unsigned int port = 3306;

int main()
{
    // std::cout<<"mysql client version: "<<mysql_get_client_info()<<std::endl;
    MYSQL *my = mysql_init(nullptr);
    if (nullptr == my)
    {
        std::cerr << " init MYSQL error" << std::endl;
        return 1;
    }
    if (mysql_real_connect(my, host.c_str(), user.c_str(), password.c_str(), db.c_str(), port, nullptr, 0) == nullptr)
    {
        std::cerr << " connect MYSQL error" << std::endl;
        return 2;
    }
    mysql_set_character_set(my, "utf8");
    // std::cout<<"connect success "<<std::endl;
    // std::string sql="insert into user(name,age,telphone) values('jim',18,'123488899');";
     std::string sql="update user set name='李四' where id =2;";
    // std::string sql = "delete from user where id =3; ";
    //std::string sql = "select * from user";
    int n = mysql_query(my, sql.c_str());
    if (n == 0)
        std::cout << sql << " success " << std::endl;
    else
    {
        std::cerr << "filed :" << sql << std::endl;
        return 3;
    }
    mysql_close(my);
    return 0;
}
  1. 增加刪除修改均可正常執(zhí)行,查詢較為復(fù)雜,整體代碼中有案例
  2. 如果查詢則需要把查詢數(shù)據(jù)保存到結(jié)果集,通過mysql所提供的函數(shù) 得到行和列,遍歷得到結(jié)果。

常用函數(shù)接口

  1. 初始化mysql并返回句柄(默認(rèn)傳入nullptr即可)
MYSQL *mysql_init(MYSQL *mysql);

如: MYSQL *mfp = mysql_init(nullptr)

  1. 鏈接數(shù)據(jù)庫
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host,
const char *user,
const char *passwd,
const char *db,
unsigned int port,
const char *unix_socket,
unsigned long clientflag);

所需參數(shù)分別是 mysql句柄 ,主機(jī)ip,sql用戶名,sql密碼,數(shù)據(jù)庫,端口號,剩余兩個填nullptr和0即可
如:

if(mysql_real_connect(my,host.c_str(),user.c_str(),password.c_str(), db.c_str(), port, nullptr, 0) == nullptr)
{
   std::cerr << " connect MYSQL error" << std::endl;
   return 2;
}
  1. 設(shè)置字符集編碼
mysql_set_character_set(myfd, "utf8");
  1. 執(zhí)行sql語句
int mysql_query(MYSQL *mysql, const char *q);
  1. 獲取查詢結(jié)果并保存到結(jié)果集
MYSQL_RES *mysql_store_result(MYSQL *mysql);

如:

    //把結(jié)果存到結(jié)果集中
    MYSQL_RES *res = mysql_store_result(my);
    if (nullptr == res)
    {
        std::cerr << " mysql_store_result error" << std::endl;
        return 4;
    }
  • 獲取結(jié)果行數(shù)mysql_num_rows
my_ulonglong mysql_num_rows(MYSQL_RES *res);
  • 獲取結(jié)果列數(shù)mysql_num_fields
unsigned int mysql_num_fields(MYSQL_RES *res);
  • 獲取列名mysql_fetch_fields
MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *res);

如:

  my_ulonglong row = mysql_num_rows(res);
    my_ulonglong col = mysql_num_fields(res);
    std::cout << "行: " << row << std::endl;
    std::cout << "列: " << col << std::endl;
    std::cout<<std::endl;

    //屬性
    MYSQL_FIELD* fields=mysql_fetch_fields(res);
    for(int i=0;i<col;++i)
    {
        std::cout<< fields[i].name<<"\t";
    }
    std::cout<<std::endl;
  • 獲取結(jié)果內(nèi)容mysql_fetch_row
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);

如:文章來源地址http://www.zghlxwxcb.cn/news/detail-641967.html

  //內(nèi)容
    for (int i = 0; i < row; ++i)
    {
        MYSQL_ROW row = mysql_fetch_row(res);
        for (int j = 0; j < col; ++j)
        {
            std::cout << row[j] << "\t";
        }
        std::cout << "\n";
    }
    std::cout<<fields[0].db<<std::endl;
    std::cout<<fields[0].table<<std::endl;

  1. 釋放結(jié)果集
 void mysql_free_result(MYSQL_RES *result)
  1. 關(guān)閉mysql連接
void mysql_close(MYSQL *sock);

整體示例:

#include <iostream>
#include <string>
#include <mysql/mysql.h>

const std::string host = "127.0.0.1";
const std::string user = "connector";
const std::string password = "123456";
const std::string db = "conn";
const unsigned int port = 3306;

int main()
{
    // std::cout<<"mysql client version: "<<mysql_get_client_info()<<std::endl;
    MYSQL *my = mysql_init(nullptr);
    if (nullptr == my)
    {
        std::cerr << " init MYSQL error" << std::endl;
        return 1;
    }
    if (mysql_real_connect(my, host.c_str(), user.c_str(), password.c_str(), db.c_str(), port, nullptr, 0) == nullptr)
    {
        std::cerr << " connect MYSQL error" << std::endl;
        return 2;
    }
    mysql_set_character_set(my, "utf8");
    // std::cout<<"connect success "<<std::endl;
    // std::string sql="insert into user(name,age,telphone) values('jim',18,'123488899');";
    // std::string sql="update user set name='李四' where id =2;";
    // std::string sql = "delete from user where id =3; ";
    std::string sql = "select * from user";
    int n = mysql_query(my, sql.c_str());
    if (n == 0)
        std::cout << sql << " success " << std::endl;
    else
    {
        std::cerr << "filed :" << sql << std::endl;
        return 3;
    }
    //把結(jié)果存到結(jié)果集中
    MYSQL_RES *res = mysql_store_result(my);
    if (nullptr == res)
    {
        std::cerr << " mysql_store_result error" << std::endl;
        return 4;
    }
    my_ulonglong row = mysql_num_rows(res);
    my_ulonglong col = mysql_num_fields(res);
    std::cout << "行: " << row << std::endl;
    std::cout << "列: " << col << std::endl;
    std::cout<<std::endl;

    //屬性
    MYSQL_FIELD* fields=mysql_fetch_fields(res);
    for(int i=0;i<col;++i)
    {
        std::cout<< fields[i].name<<"\t";
    }
    std::cout<<std::endl;

    //內(nèi)容
    for (int i = 0; i < row; ++i)
    {
        MYSQL_ROW row = mysql_fetch_row(res);
        for (int j = 0; j < col; ++j)
        {
            std::cout << row[j] << "\t";
        }
        std::cout << "\n";
    }
    std::cout<<fields[0].db<<std::endl;
    std::cout<<fields[0].table<<std::endl;

    mysql_free_result(res);
    mysql_close(my);
    return 0;
}

到了這里,關(guān)于【MySQL】使用C++連接數(shù)據(jù)庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【MySQL】使用DBeaver數(shù)據(jù)庫管理工具進(jìn)行MySQL數(shù)據(jù)庫連接

    【MySQL】使用DBeaver數(shù)據(jù)庫管理工具進(jìn)行MySQL數(shù)據(jù)庫連接

    一、數(shù)據(jù)庫連接信息填寫 1、服務(wù)器地址:填寫服務(wù)器部署的地址,以及端口號 2、數(shù)據(jù)庫:sys 3、用戶名:root 4、密碼:服務(wù)器上面設(shè)置的具體密碼 以上信息填寫錯誤的報錯提示 :Access denied for user ‘XXX’@’%’ to database ‘10.42.67.22’ 二、數(shù)據(jù)庫說明 1、數(shù)據(jù)庫連接時選擇的

    2024年02月09日
    瀏覽(109)
  • 使用python連接mysql數(shù)據(jù)庫

    使用python連接mysql數(shù)據(jù)庫

    第一章 Python 機(jī)器學(xué)習(xí)入門之連接mysql數(shù)據(jù)庫 提示:這里可以添加本文要記錄的大概內(nèi)容: 例如:隨著人工智能的不斷發(fā)展,機(jī)器學(xué)習(xí)這門技術(shù)也越來越重要,很多人都開啟了學(xué)習(xí)機(jī)器學(xué)習(xí),本文就介紹了機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容。 在控制臺輸入如下: 代碼如下(示例): 演示

    2024年02月16日
    瀏覽(29)
  • 使用C#連接MySQL數(shù)據(jù)庫(詳解)

    使用C#連接MySQL數(shù)據(jù)庫(詳解)

    ?前言? 本片文章,主要在于C#連接MySQL數(shù)據(jù)庫,由于這之間無法建立直接聯(lián)系,這時候就涉及到了第三方連接工具.NET,以此來建立C#與MySQL數(shù)據(jù)庫的連接 ??歡迎點(diǎn)贊 ?? 收藏 ?留言評論 ??私信必回喲?? ??博主將持續(xù)更新學(xué)習(xí)記錄收獲,友友們有任何問題可以在評論區(qū)留

    2024年02月05日
    瀏覽(39)
  • 使用eclipse連接mysql數(shù)據(jù)庫步驟

    使用eclipse連接mysql數(shù)據(jù)庫步驟

    1.導(dǎo)入連接MySQL數(shù)據(jù)庫驅(qū)動包(例如mysql-connector-java-5.1.7-bin.jar),并測試。 步驟: 1)在eclipse里面點(diǎn)擊右上角的圖標(biāo),如下圖所示。 2)選中Database Connections右鍵,點(diǎn)new。 3)選擇MySQL,點(diǎn)擊next。 4)如圖所示: 2.引用MySQL驅(qū)動包jar 在項目右鍵一個文件夾lib,把驅(qū)動包復(fù)制進(jìn)去,

    2024年02月11日
    瀏覽(49)
  • 【MySQL】如何使用Unix Sockets 協(xié)議連接MySQL數(shù)據(jù)庫

    MySQL入門02:關(guān)于MySQL連接的ABC 【MySQL】如何使用Named Pipe協(xié)議(Windows)連接MySQL數(shù)據(jù)庫 【MySQL】如何使用Shared-memory協(xié)議(Windows)連接MySQL數(shù)據(jù)庫 【MySQL】如何使用Unix Sockets 協(xié)議連接MySQL數(shù)據(jù)庫 【免責(zé)聲明】文章僅供學(xué)習(xí)交流,觀點(diǎn)代表個人,與任何公司無關(guān)。 編輯|SQL和數(shù)據(jù)庫技術(shù)

    2024年02月11日
    瀏覽(41)
  • 使用 Next.js 連接 mysql 數(shù)據(jù)庫

    使用 Next.js 連接 mysql 數(shù)據(jù)庫

    本文主要為大家介紹,如何使用 Next 框架實(shí)現(xiàn)一個簡單的 后端接口 ,并且從 數(shù)據(jù)庫 中請求數(shù)據(jù)返回給前端。 項目創(chuàng)建完成后在 app?文件下新建api文件夾,在 api 文件夾下新建 getData 文件夾,在 getData 文件夾下新建 route.js,這里面用于存儲我們的接口信息,如下 注意: 在

    2024年02月22日
    瀏覽(32)
  • uniapp使用express連接mysql數(shù)據(jù)庫

    uniapp使用express連接mysql數(shù)據(jù)庫

    使用win+R再輸入cmd打開命令提示符,輸入如下內(nèi)容全局安裝腳手架 npm i express-generator -g 可以在命令提示符中cd到自己項目的根目錄下,也可以在HBuilder X里內(nèi)置的終端運(yùn)行代碼 ?C:HBuilderProjectswordman express --view=ejs server 說明:前面是項目的根目錄,express --view=ejs projectName proje

    2024年02月06日
    瀏覽(46)
  • Navicat (連接mysql數(shù)據(jù)庫)的基本使用

    Navicat (連接mysql數(shù)據(jù)庫)的基本使用

    目錄 前言 一、navicat-15的下載安裝 二、navicat連接數(shù)據(jù)庫 1、登錄 2、連接數(shù)據(jù)庫失敗情況 3、登錄數(shù)據(jù)庫需要授權(quán) 三、navicat的基礎(chǔ)操作? ☆ 1、數(shù)據(jù)庫的基本操作 2、對表進(jìn)行操作 3、sql 語句管理數(shù)據(jù)庫? 4、用戶管理 5、?視圖的創(chuàng)建 6、表的導(dǎo)入與導(dǎo)出? 7、數(shù)據(jù)庫的備份?

    2024年02月04日
    瀏覽(23)
  • 【MySQL系列】使用C語言來連接數(shù)據(jù)庫

    【MySQL系列】使用C語言來連接數(shù)據(jù)庫

    ?導(dǎo)航小助手? ? ? ??? 寫在前面 ? ? ? ? ? ?? 一、準(zhǔn)備工作 ? ? ? ? ? ? ? ????? 1.1 把 libmysql.dll 和 libmysql.lib 文件復(fù)制到工程目錄下 ? ? ? ? ? ? ? ????? 1.2 添加 libmysql.lib? ? ? ? ? ? ? ? ????? 1.3 添加 include目錄 ? ? ? ? ? ? ? ????? 1.4 包含頭文件 ? ?

    2024年02月04日
    瀏覽(44)
  • 實(shí)例講解C++連接各種數(shù)據(jù)庫,包含SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 數(shù)據(jù)庫

    ? C++ 是一種通用的編程語言,可以使用不同的庫和驅(qū)動程序來連接各種數(shù)據(jù)庫。以下是一些示例代碼,演示如何使用 C++ 連接 SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 數(shù)據(jù)庫。 連接 SQL Server 數(shù)據(jù)庫 要使用 C++ 連接 SQL Server 數(shù)據(jù)庫,可以使用 Microsoft 的 ADODB 庫。以

    2024年02月05日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包