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

從舉例開啟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精品在线观看剧情| 国产老熟女高潮视频| 欧美午夜一级特黄大片| 中文字幕人妻紧贴拍摄| 麻豆乱淫一区二区三爱免费| 九九九视频精品免费九九| 最新中文字幕人妻少妇| 色自拍偷拍另类欧洲美女| 粉嫩美女精品一区二区| 人妻中字幕出轨中文字幕| 亚洲福利一区二区在线| 亚洲新大香蕉视频在线播放| 亚洲欧美日韩精品麻豆| 丰满肥臀熟女高清区二区| 熟女高潮av一区二区| 中文成人无字幕乱码精品| 国产精品美女露脸av毛片| 亚洲日本欧美一区二区| 黑人巨大一区二区三区| 人人爽久久爱夜夜躁一区| 日韩免费毛片在线观看| 97人妻人人揉人人澡人人学生| 久久精品一区二区熟女| 色哟哟视频在线免费观看| 青青草原在线观看网站| 亚洲综合av一区二区| 青青草成人免费在线公开视频| 在线观看国产高清自拍| 69国产精品久久久久久人| 91好色视频在线观看| 99热这里只有精品在线| 久草手机福利在线观看| 日本欧美三级一二三区| 求个手机免费在线观看av网址| 久久av天堂在线观看| 亚洲最大av在线精品国产| 亚洲新大香蕉视频在线播放| 欧美日韩国产激情在线观看| 精品日韩欧美精品日韩|