處理結果集
查詢結果都保持在resultset結果集中,遍歷結果集便可以取得其中的資料。
實際應用中,一般會查詢多個**,查詢多個**可以使用同乙個statement或者preparedstatement實現,返回同乙個resultset物件
例如:
string sql = "select * from table1";
pstmt = conn.preparestatement(sql);
rs = pstmt.executequery();
while(rs.next())
//不用執行rs.close(),jdbc預設自動關閉前一次查詢的rs
string sql = "select * from table2";
pstmt = conn.preparestatement(sql);
rs = pstmt.executequery();
while(rs.next())
除了常用的next()方法,resultset介面還有其它的方法,如previous(),first(),last()等,如果後面還有記錄,next()會返回true,同時自動滾向下一條記錄,否則返回false。previous()則相反。
為了效率,statement預設返回的是rs是只向後滾動的,因此只有next,last方法可用,要使用previous,first等方法,可以按如下方法
建立statement:
stmt =conn.createstatement(result.type_scroll_insensitive, resultset.concur_updatable);
rs = stmt.executequery("...");
其中第1個引數指定建立的resultset可以自由滾動,第2個引數指定statement建立的resultset可以直接修改
資料量大時需要分頁顯示,分頁顯示時只從資料庫中取出本頁要顯示的記錄,而不必把所有的記錄都讀取出來。mysql中實現分頁是利用limit來實現的,如「select * from table1 limit 21,10」,只取出從第21行開始的10行記錄。
分頁時要先計算記錄總數,然後再計算頁面數,當計算好後,製作分頁。
如果是sql server的話:
select top 10 * from table1 where id not in(select top (pagenum-1)*10 id)
pagination分頁顯示-步驟
(1)取得傳來的要顯示的頁面數
(2)定義分頁變數
int pagenum = 1; //當前頁面(3)計算總頁面數int pagesize = 3; //每頁的記錄條數
int pagesum = 0; //總頁面數
(4)取得分頁資料並顯示pagesum = icount/pagesize;
if(icount%pagesize!=0)
resultset可以通過無資料在不知道列名的時候將列名取出來。
rs = pstmt.executequery();
resultsetmetadata meta = rs.getmetadata();
int columncount = meta.getcolumncount();
string columns = new string[columncount];
system.out
.println("各個列的列名如下:");
for(int i=1
;icolumns[i-1]=meta.getcolumnname(i);
system.out
.println(columns[i-1]);
}
sql查詢的時候可以宣告別名:
select id 編號, uname 姓名, realname 真實姓名 from table1
顯示列名時的語句:
columns[i-1]=meta.getcolumnlabel(i);
反射 內省機制的運用 處理jdbc的結果集
1 把結果集中的一行資料,封裝成乙個物件,專門針對結果集中只有一行資料的情況。2 處理結果集 多行資料,封裝成多個物件 list 專門針對結果集中只有一行資料的情況 把結果集中的一行資料,封裝成乙個物件 beanhandler public class beanhandlerimplements i...
非同步記錄日誌 獲取非同步處理結果
1.場景 有事務的情況下,記錄將異常資訊記錄到異常表中 2.處理過程 2.1本來是加上never或者notsurport註解,然後在throw拋異常之前把異常資訊插入資料庫,但是未成功,拋異常時回滾 2.2finally中呼叫被 async註解的方法 2.3注意 這個帶 async註解的方法要放在其...
PLAY2 6 SCALA 六 非同步處理結果
play是乙個自底向上的非同步框架,play處理所有的request都是非同步 非阻塞的。預設的方式是使用非同步的controller。換句話說,contrller中的應用 需要避免阻塞,i.e.不能等待某乙個操作。場景的阻塞操作有jdbc呼叫 streaming api http請求和耗時計算。雖...