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执行更改的行数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 数独求解,高效算法求解数独(示例
- 下一篇: 计算机的excel的知识,计算机基础知识