日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jdbc获取结果行数_java – 如何判断从JDBC执行更改的行数

發布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jdbc获取结果行数_java – 如何判断从JDBC执行更改的行数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我不確定如何從SQL執行中獲取受影響的行數.

我喜歡這個:

boolean isResultSet = statement.execute(arbitrarySQLCommand);

我可以從getUpdateCount()方法獲取受影響的行數.這一切都很好.我遇到的問題是更新計數為零時.這可能意味著:

>這是一個DML語句,但它不會影響任何行.受影響的零行是有效的響應.我只是意味著某些條件沒有得到滿足.

>這是一個非DML語句(最有可能是DDL語句)..根據定義,它不會更改行,因此更新計數始終為零(呃!).或者換句話說:對于這樣的陳述,更新計數的概念毫無意義.

我想要的是能夠區分上面的情況1和2.怎么樣?

我對產生輸出的語句不感興趣,所以我也可以使用executeUpdate(),但正如我所看到的那樣,該方法的返回值具有相同的缺陷:

Returns:

either (1) the row count for SQL Data Manipulation Language (DML) statements or (2) 0 for SQL statements that return nothing

Arghhh!

我希望它是:

Returns:

either (1) the row count for SQL Data Manipulation Language (DML) statements or (2) -1 for SQL statements that return nothing

(注意:我事先不知道任意SVLCommand的內容)

最終選擇的方案

似乎沒有一個真正的類似JDBC的解決方案.在我看來,JDBC的設計者在getUpdateCount上犯了一個嚴重的錯誤,它使用值0(零)來表示一個沒有(按定義)影響行的語句,因為受影響的零行也是一個完全有效的結果值DML聲明.

唯一可能的解決方案似乎是在SQL語句上進行某種模式匹配,以確定它是否是DML語句(INSERT,UPDATE,DELETE)或其他類型的SQL語句.像這樣的東西:

>從任意SFLCommand中提取第一個單詞.一個字終止了

通過空格或EOL行char.

>如果那個詞(忽略

case)是INSERT,UPDATE或DELETE,然后是DML語句

并且getUpdateCount()的輸出是相關的,否則是

getUpdateCount()的輸出無關緊要.

丑陋且容易出錯.但是這個問題出來的唯一可能的解決方案. 🙁

總結

以上是生活随笔為你收集整理的jdbc获取结果行数_java – 如何判断从JDBC执行更改的行数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。