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

mysql中update語句返回的結果是什么

本篇內(nèi)容主要講解“MySQL中update語句返回的結果是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“mysql中update語句返回的結果是什么”吧!

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設,安徽企業(yè)網(wǎng)站建設,安徽品牌網(wǎng)站建設,網(wǎng)站定制,安徽網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,安徽網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

mysql中update語句的返回結果:1、當數(shù)據(jù)庫的url中沒有“useAffectedRows=true”參數(shù)時,返回匹配行數(shù);2、當數(shù)據(jù)庫的url中有“useAffectedRows=true”參數(shù)時,返回影響行數(shù)。

本教程操作環(huán)境:windows10系統(tǒng)、mysql8.0.22版本、Dell G3電腦。

mysql中update語句返回什么

update語句的結果到底是匹配行數(shù)?還是影響行數(shù)?

先說結果:如果數(shù)據(jù)庫的url為:

jdbc:mysql://gitlab.fzghjx.com:3306/cron

則,返回結果為匹配行數(shù)(Rows matched)。

若為:

jdbc:mysql://gitlab.fzghjx.com:3306/cron?useAffectedRows=true

則返回的是影響行數(shù)(Changed)。

綜上:

如果url中沒有  useAffectedRows=true  這個參數(shù),則返回的是匹配行數(shù)。如果有,則返回的是影響行數(shù)。

如何讓其返回值為受影響(changed)的記錄數(shù)呢?

只需在mysql數(shù)據(jù)連接url參數(shù)加useAffectedRows=true即可

jdbc.url=jdbc:mysql://localhost:3306/ssm?useAffectedRows=true

擴展知識:

猜想

如果通過cmd操作mysql的update語句,屏幕上顯示其實是這樣的:

mysql中update語句返回的結果是什么

當我想這個問題的時候,第一反應有兩個答案,1,在mysql服務器的返回結果中,進行判斷,如果有這個設置為true,則返回Rows matched的值,如果為false,則返回Changed的值。2,在返回給查詢語句的時候,進行這個值的選擇。

證實

借用一個圖來說明創(chuàng)建connection的整個過程:

mysql中update語句返回的結果是什么

(圖摘自:https://blog.csdn.net/c929833623lvcha/article/details/44517245)

當我研究了一段時間之后,我發(fā)現(xiàn),這兩種想法都錯了。具體來看:

我寫了一個簡單的jdbc查詢:

mysql中update語句返回的結果是什么

1,建立Connection

根據(jù)源碼,追蹤,在mysql建立connection的時候,會將useAffectedRows=true這個參數(shù)設置為connection的屬性。

Connection connection = DriverManager.getConnection("jdbc:mysql://gitlab.fzghjx.com:3306/cron?useAffectedRows=true", "root", "root");

往下追蹤:

mysql中update語句返回的結果是什么

繼續(xù):connect方法為:java.sql.Driver#connect,實現(xiàn)為:com.mysql.jdbc.NonRegisteringDriver#connect

mysql中update語句返回的結果是什么

useAffectedRows=true就是在com.mysql.jdbc.NonRegisteringDriver#parseURL方法中讀取,并設置到  Properties props中去的。

再往下:com.mysql.jdbc.ConnectionImpl#getInstance獲取connectiong的實例

mysql中update語句返回的結果是什么

這里是一個反射,args為  JDBC_4_CONNECTION_CTOR  用到的是JDBC的構造函數(shù):

mysql中update語句返回的結果是什么

JDBC的構造函數(shù),是:

public JDBC4Connection(String hostToConnectTo, int portToConnectTo, Properties info, String databaseToConnectTo, String url) throws SQLException {
    super(hostToConnectTo, portToConnectTo, info, databaseToConnectTo, url);
}

往上找,是ConnectionImp的構造函數(shù):

mysql中update語句返回的結果是什么

(順便提一句:這里設置了事務的隔離級別為2,讀已提交)

mysql中update語句返回的結果是什么

在這個構造函數(shù)里,將  useAffectedRows的值初始化到connection中去了:

mysql中update語句返回的結果是什么

這里有206個屬性要設置,useAffectedRows排在190位(不同的mysql-connect-java版本,位置不一樣)。

設置完成之后:

mysql中update語句返回的結果是什么

2,創(chuàng)建MysqlIO

設置完屬性之后,就要創(chuàng)建MysqlIO了:

mysql中update語句返回的結果是什么

mysql中update語句返回的結果是什么

這里有一個“高可用”的選項,如果是的話,就會創(chuàng)建一個重試的IO鏈接。否則,則創(chuàng)建一個只嘗試一次的IO鏈接,失敗了就不會重試。這個選項,也是在url中,通過設置:autoReconnect=true來開啟的。

3,與msyql服務器握手連接

連接IO過程,其實就是創(chuàng)建一個MysqlIO,然后開始握手:

mysql中update語句返回的結果是什么

重點來了:在doHandshake方法中,設置了useAffectedRows的選項:(com.mysql.jdbc.MysqlIO#doHandshake)

mysql中update語句返回的結果是什么

這個CLIENT_FOUND_ROWS的值為:

mysql中update語句返回的結果是什么

也就是低位的倒數(shù)第二位的值進行操作。如果useAffectsRows,則不會進行操作。

設置完之后,通過mysqlOutput的socket發(fā)送給mysql 服務器:

mysql中update語句返回的結果是什么

mysqlOutput來源:在MysqlIO構建的時候創(chuàng)建的。

mysql中update語句返回的結果是什么

ok,這是一個簡單的過程。接下來,來看tcp的報文:

4,報文分析:

useAffectedRows=true時:

發(fā)送請求給mysql服務器:

mysql中update語句返回的結果是什么

mysql服務器的響應:

mysql中update語句返回的結果是什么

useAffectedRows=false時:

發(fā)送請求給mysql服務器:

mysql中update語句返回的結果是什么

mysql服務器的響應:

mysql中update語句返回的結果是什么

從以上報文可以看出,useAffectedRows為true和false時,msyql服務器的返回值是不同的。最后jdbc取的返回結果,就是報文中,Affected Rows的值 。直接從msyql的結果中獲取,jdbc只是對結果進行了一些解析和過濾。由此證明,最開始的猜想是錯的。

到此,相信大家對“mysql中update語句返回的結果是什么”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

網(wǎng)頁題目:mysql中update語句返回的結果是什么
本文網(wǎng)址:http://aaarwkj.com/article44/jesgee.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供響應式網(wǎng)站、商城網(wǎng)站企業(yè)網(wǎng)站制作、域名注冊網(wǎng)頁設計公司、

廣告

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

綿陽服務器托管
国产免费av一区二区在线观看| 欧美亚洲另类激情另类的| 日韩中文字幕乱码卡一| 夫妻过性生活视频播放| 日本中文一区在线观看| 香蕉视频欧美久久精品| 日本加勒比一道本东京热| 久久精品熟女亚洲av色| 日韩不卡区高清在线视频| 中文字幕日韩精品在线看| 成人大片在线免费观看视频| 国产呦精品一区二区三区| 99精品人妻一区二区三区| 国产欧美日本精品视频| 亚洲国产精品成人女人| 精品一区二区三区乱码中文| 亚洲巨人精品福利导航| 亚洲国产高清国产拍精品 | 性激烈的欧美三级男同| 日产中文乱码字幕无线观看| 精品人妻一区二区三区观看| 亚洲区自拍偷拍一区二区| 欧美一级特黄大片免色| 亚洲av色国产精品色午含羞草| 国产黄色一区二区三区| 国产精品视频一区二区噜| 中文字幕在线感觉av| 精品国产女同一区二区| 全国精品免费视频久久久| 日韩成人中文字幕电影| 国产欧美日韩综合一区| 国产精品水嫩水嫩粉嫩| 欧美日韩在线不卡一区| 日本精品一级免费在线| 操你啦夜夜操狠狠躁天天爽| 国产传媒在线免费播放视频| 在线一区二区三区成人观看| 日本一区二区三区视频| 日韩美女搞黄色的网站| 综合资源网日韩天天操| 亚洲天堂av在线播放|