❶ java裡面 resultset能夠作為函數的返回值嗎
java裡面的ResultSet是可以作為函數的返回值的,這個函數返回一個ResultSet對象,具體示例代碼如下:
publicclassDemo{
publicstaticvoidmain(String[]args){
}
privateResultSetgetNum(){//返回值為ResultSet的函數
ResultSetrs=null;
returnrs;
}
}
ResultSet是資料庫結果集的數據表,通常通過執行查詢資料庫的語句生成。
❷ java.sql.SQLException: 用盡的 Resultset
樓主你好。方才看了一下你的代碼,我想你下面的意思是不是這樣的:如果該數據在資料庫存在,就更新該數據,不存在就新插入一條數據,是這樣的嗎?
你的代碼:
————————————————————————————————
if(qyxxRs!=null&&qyxxRs.next()){//判斷是否存在值
String updateSql = "update B_QYXX t set t.qymc='"+qymc+"',t.zzjgdm='"+qyjbxxzzjgdm+"',t.yyzzh='"+yyzzzch+"'";
ps.executeUpdate(updateSql);
}else{
String insertSql = "";
}
————————————————————————————————
那麼看看我給你的建議代碼:
boolean exists = false; //判斷是否資料庫是否存在數據
exists = qyxxRs.next();
do{
if(exists){
String updateSql = "update B_QYXX t set t.qymc='"+
qymc+"',t.zzjgdm='"+qyjbxxzzjgdm+"',t.yyzzh='"+yyzzzch+"'"; /**要提示一下,這條sql寫的很是汗顏,為什麼?這條sql一旦執行,將是更新所有的數據,這怎麼不讓人汗顏呢!所以要在sql後面加限定條件where子句*/
ps.executeUpdate(updateSql);
}else{
String insertSql = "";
}
exists = false; //執行一次循環過後,初始化數據
}while(exists = qyxxRs.next());
————————————————————————————————
好了,就是這些,希望能幫助你。
❸ 使用java,用resultset獲取資料庫中的結果
ResultSet
是一個迭代模式的動態連接容器。
迭代模式的容器遍歷的時候通常是這樣的
while(rs.next()){
//循環內容
}
rs.next()返回值是一個boolean,表示在迭代過程中是否已經到結尾。
直接從statement.excuteQuery()獲得的rs默認數據游標在起始數據的前一個位置,調用一遍rs.next()才能指向可能有數據的第一條數據。然後遍歷繼續,直到迭代集合中再無數據rs.next()返回false;
ps:rs.getRow()表達的意思是結果集在當前游標下共存在多少列,不是rs的size()
在循環體中您將可以獲得當前整行數據的各個列的值以及其它信息。
❹ java里進行資料庫更新時,怎麼取得影響的行數值
1、用sql語句中的count函數,然後從ResultSet里獲取第一行的數字:
try {
ResultSet resultSet = statement.executeQuery("select count(1) as nRrow from tableName");//使用sql的count函數
resultSet.next();//移動到第一行
int rowCount = resultSet.getInt("rowCount");//獲取行數值
} catch (Exception e) {
e.printStackTrace();
}
這種方法不用遍歷整個數據集,節省了運算時間,但是,此方法只能用於獲取數據表的行數,不能獲取表中的具體數據。所以如果只是想知道數據表的行數,此方法非常適合。
2、遍歷Resultset,用一個變數累加記錄行數,代碼如下:
int nRow = 0;
try {
ResultSet resultSet = statement.executeQuery("select * from tableName");//使用select語句查詢數據表
while(resultSet.next()){//遍歷
nRow++;
}
} catch (SQLException e1) {
e1.printStackTrace();
}
next 函數將指針移動到下一行;因為該方法在 ResultSet 對象中沒有下一行時返回 false,所以可以在 while 循環中使用它來迭代結果集。
這種方法需要遍歷整個結果集,在遍歷過程中可以獲取數據;
但是在遍歷完之後,不能再使用結果集了,因為這時候指針已經移動到結果集的外面了,不能返回到結果集的初始處。
❺ Java兩個線程分別返回兩個ResultSet,如何分多次讀取兩個ResultSet的結果
創建實體
ResultBean
private RsultSet resultSet;
private List<Bean> resultList;
包含方法:
方法1:public List<Bean> getResultList();每次將resultList清空後使用resultSet.next讀取Bean再添加,判斷是否遍歷完畢,遍歷完畢調用closeResultSet方法並返回null
方法2:public void closeResultSet();關閉ResultSet
2.建立一個單例工具類ResultUtil,包含以下私有成員
private Map<用戶操作標識,ResultBean> resultMap;
用戶操作標識每次進入頁面時隨機生成一個且不可重復,後續點擊載入都是使用頁面初始化時使用的用戶操作標識
方法1:public void pushResultBean(String 用戶操作標識,ResultBean resultBean) ;添加ResultBean到resultMap中,key為用戶操作標識;
方法2: public ResultBean getResultBean(String 用戶操作標識) 根據用戶操作標識取得ResultBean;
方法 3:public void removeResultBean(String 用戶操作標識);通過用戶操作標識remove
3.介面層
通過用戶標識調用單例工具類的ResultUtil.getResultBean方法,通過得到的ResultBean再調用getResultList方法,當getResultList方法返回結果為空將調用ResultUtil.removeResultBean方法
4.前端
每次通過用戶操作標識請求介面,得到響應結果追加即可
機優化方案:還需要ResultUtil中的resultMap回收,可以考慮使用websoket,或者心跳機制,想簡單的話先用心跳機制解決,單獨開一個介面,前端定時調用,如果超過三十秒該用戶操作標識沒有心跳檢測調用ResultUtil.removeResultBean方法,若是用戶體量大的話考慮使用netty
❻ JAVA的JDBC ResultSet只遍歷了一次 附圖了請幫我看下
prepareStatement是預編譯,你換成Statement試試,不知道是不是這個原因
❼ 如何把java.util.List中的數據遍歷到ResultSet 中,然後把這些數據在頁面中遍歷出來
list在頁面可以直接變例啊!!
在說ResultSet只能通過查詢sql語句得到啊!
你這樣強制轉換肯定出問題的~~
❽ java ResultSet取值
遍歷resultSet
while(rs.next())
{
int i =rs.getString("數字的列名");
if(2==i)
{
// 對這行的其他操作
}
}
❾ 各位大俠,請問:java調用存儲過程返回的resultSet,在數據量大的情況下採用rs.next()遍歷數據會很慢嗎
肯定會,取數據返回,也會很慢。
通常,分頁。如果不能分頁,在閑時處理。
❿ java中resultset 如何獲得表中的某行某列的值
資料庫中查出來的,ResultSet rs = statement.executeQuery(sql);查到這個之後就用while循環,條件是rs.next();通過rs.get類型(索引或者欄位名)得到相應的值