欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

從舉例開啟mysql編程入門之路

下文內(nèi)容主要給大家?guī)韽呐e例開啟MySQL編程入門之路,所講到的知識,與書籍略有不同,都是創(chuàng)新互聯(lián)專業(yè)技術(shù)人員在與用戶接觸過程中,總結(jié)出來的,具有一定的經(jīng)驗分享價值,希望給廣大讀者帶來幫助。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比萍鄉(xiāng)網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式萍鄉(xiāng)網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋萍鄉(xiāng)地區(qū)。費用合理售后完善,10年實體公司更值得信賴。

先了解幾個概念:
MYSQL默認是自動提交的,也就是你提交一個QUERY,它就直接執(zhí)行!我們可以通過
set autocommit=0  禁止自動提交
set autocommit=1 開啟自動提交
mysql中INNODB引擎才支持事務(wù)處理,默認是自動提交的;
另外一種常用的MYISAM引擎是不支持事務(wù)的,本身就沒有事務(wù)的概念

從代碼中來看:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dlfcn.h>
#include <mysql/mysql.h>
#include <unistd.h>
#include <errno.h>

//oracle的事務(wù):事務(wù)起始標志 DML語言 (oracle默認事務(wù)似是打開的)
//MYSQL默認是自動提交的 (每執(zhí)行一個sql語言都給你自動提交)
/*
MySQL set autocommit = 0或1分別什么啊,哪個是自動提交啊
要熟練使用mysql的幫助文檔,在里面查找autocommit,就會有相應(yīng)的注釋,比我在這里直接給你說要深刻得多。

autocoomit是事務(wù),根據(jù)mysql的文檔如果等于1是立即提交。但在transction中只有遇到commit或rollback才提交。希望對你有用。

從舉例開啟mysql編程入門之路

*/
#define BEGIN_TRAN      "START TRANSACTION"
#define SET_TRAN            "SET AUTOCOMMIT=0"  
#define UNSET_TRAN      "SET AUTOCOMMIT=1"
#define COMMIT_TRAN     "COMMIT"
#define ROLLBACK_TRAN   "ROLLBACK"

int mysql_BeginTran(MYSQL *mysql)
{
int ret = 0;

//--執(zhí)行事務(wù)開始SQL
ret = mysql_query(mysql, BEGIN_TRAN);
if (ret != 0)
{
    printf("func mysql_query() err: %d\n", ret);
    return ret;
}

//--設(shè)置事務(wù)手動提交
ret = mysql_query(mysql, SET_TRAN);
if (ret != 0)
{
    printf("func mysql_query() err: %d\n", ret);
    return ret;
}

return ret;

}

int mysql_Rollback(MYSQL *mysql)
{
int ret = 0;

//--事務(wù)回滾操作
ret = mysql_query(mysql, ROLLBACK_TRAN);
if (ret != 0)
{
    printf("func mysql_query() err: %d\n", ret);
    return ret;
}

//--恢復(fù)事務(wù)自動提交標志
ret = mysql_query(mysql, UNSET_TRAN);
if (ret != 0)
{
    printf("func mysql_query() err: %d\n", ret);
    return ret;
}

return ret;

}

int mysql_Commit(MYSQL *mysql)
{
int ret = 0;

//--執(zhí)行事務(wù)提交SQL
ret = mysql_query(mysql, COMMIT_TRAN);
if (ret != 0)
{
    printf("func mysql_query() err: %d\n", ret);
    return ret;
}

//--恢復(fù)自動提交設(shè)置
ret = mysql_query(mysql, UNSET_TRAN);
if (ret != 0)
{
    printf("func mysql_query() err: %d\n", ret);
    return ret;
}

return ret;

}

// drop table test_table
// 建表 create table test_table(col1 int, col2 varchar(10), col3 varchar(10));

#define sql01 "INSERT INTO test_table(col1,col2,col3) VALUES(10, '10', '1')"
#define sql02 "INSERT INTO test_table(col1,col2,col3) VALUES(20, '20', '2')"
#define sql03 "INSERT INTO test_table(col1,col2,col3) VALUES(30, '30', '3')"
#define sql04 "INSERT INTO test_table(col1,col2,col3) VALUES(40, '40', '4')"

int main()
{
int         ret = NULL;

MYSQL       *mysql;

MYSQL_RES   *res;
MYSQL_ROW   row;
char        *query;

mysql = mysql_init(NULL);

mysql =mysql_real_connect(mysql, "localhost", "root", "123456", "mydb2", 0, NULL, 0 );
if (mysql == NULL)
{
    ret = mysql_errno(mysql);
    printf("func mysql_real_connect() err\n");
    return ret;
}
else
{
    printf(" ok......\n");
}

ret = mysql_BeginTran(mysql); //修改事務(wù)的屬性,變成不自動 提交 
if (ret != 0)
{
    printf("mysql_BeginTran() err:%d\n", ret);
    return ret;
}
ret = mysql_query(mysql, sql01);
if (ret != 0)
{
    printf("mysql_query() err:%d\n", ret);
    return ret;
}
ret = mysql_query(mysql, sql02);
if (ret != 0)
{
    printf("mysql_query() err:%d\n", ret);
    return ret;
}
ret = mysql_Commit(mysql); //提交事務(wù),恢復(fù)事務(wù)的默認屬性
if (ret != 0)
{
    printf("mysql_Commit() err:%d\n", ret);
    return ret;
}

ret = mysql_BeginTran(mysql);
if (ret != 0)
{
    printf("mysql_BeginTran() err:%d\n", ret);
    return ret;
}
ret = mysql_query(mysql, sql03);
if (ret != 0)
{
    printf("mysql_query() err:%d\n", ret);
    return ret;
}
ret = mysql_query(mysql, sql04);
if (ret != 0)
{
    printf("mysql_query() err:%d\n", ret);
    return ret;
}
ret = mysql_Rollback(mysql);
if (ret != 0)
{
    printf("mysql_Rollback() err:%d\n", ret);
    return ret;
}

mysql_close(mysql);

}
結(jié)果顯然sql1 sql2 commit 生效
sql3  sql4 rollback回滾無效

對于以上關(guān)于從舉例開啟mysql編程入門之路,如果大家還有更多需要了解的可以持續(xù)關(guān)注我們創(chuàng)新互聯(lián)的行業(yè)推新,如需獲取專業(yè)解答,可在官網(wǎng)聯(lián)系售前售后的,希望該文章可給大家?guī)硪欢ǖ闹R更新。

 

本文題目:從舉例開啟mysql編程入門之路
當前URL:http://aaarwkj.com/article14/pdeege.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、品牌網(wǎng)站建設(shè)、品牌網(wǎng)站制作、網(wǎng)站設(shè)計、電子商務(wù)、網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
亚洲女同成人在线观看| 日韩 欧美 国产 亚洲 综合| 日韩一级免费高清黄片| 国产精品一级二区三区| 夜夜高潮夜夜爽免费观看| 久久综合久中文字幕青草| 国产午夜精品自拍视频| 国产在线麻豆在拍91精品| 99久久久国产精品蜜臀 | 亚洲一区二区三区经典精品| 激情av一区二区不卡| 亚洲一区二区午夜福利亚洲| 国产综合中文字幕不卡| 一区二区三区人妻日韩| 欧美黄色一区二区在线观看| 欧美国产一级二级三级| 国产成人免费视频大全| 自拍偷拍一区蜜桃视频| 久久国产精品亚洲看片| 超碰91人人在线青青草| 免费女同一区二区三区| 成年人在线观看免费观看| 日韩在线国产亚洲精品| 亚洲国产熟女一区二区三| 亚州欧美制服另类国产| 欧美日韩国产精品一区二区三区 | 亚洲综合一区二区三区不卡| 国产精品一区二区三区激情| 亚洲欧洲日韩另类在线| 久久精品女人天堂av| 九九精品在线观看视频| 成人午夜激情在线免费观看| 热门精品一区二区三区| 色偷偷亚洲精品一区二区| 熟女一区二区蜜桃视频| 一二三四在线观看日本资讯| 久久精品一区二区东京热| 日本欧美一区二区精品| 日本免费91午夜视频| 强d乱码中文字幕在线| 丰满人妻被黑人猛烈进入免费|