以下是我自行整理的一些筆記,歡迎查閱 但要轉發,請註明出處謝謝!
尊重作者也尊重自己!
首先要先介紹
createStatement()裡面的一些參數
以下是游標類型
1.ResultSet.TYPE_FORWARD_ONLY
內定的游標類型,只能往前移動紀錄,不能往回走。最有效率,最廣泛使用!
2.ResultSet.TYPE_SCROLL_INSENSITIVE
提供資料的一個靜態拷貝,允許ResultSet在任意形式中移動,但無法檢閱其他人之新增刪除修改的紀錄,
簡單說就是產生此類游標ResultSet便和原始資料來源切斷關係。
3.ResultSet.TYPE_SCROLL_SENSITIVE
此類型允許我們檢視其他人所做的新增刪除修改的紀錄,
如果人家變更資料表的話,他會立即反應在ResultSet之中。缺點是較佔記憶體。
以下是同步性模式
1.ResultSet.CONCUR_READ_ONLY 簡言之就是唯獨
2.ResultSet.CONCUR_UPDATABLE 可供多人同時修改。
以下是ResultSet常用的一些函數說明
ResultSet |
說明 |
回傳值 |
備註 |
rs.First() |
移到第一筆資料 |
boolean |
★ |
rs.Last() |
移到最後一筆資料 |
boolean |
★ |
rs.next() |
移到下一筆資料 |
boolean |
|
rs.previous() |
移到上一筆資料 |
boolean |
★ |
rs.absolute(n) |
移到第N筆資料 |
boolean |
★ |
rs.BeforeFirst() |
移動到第一筆之前 |
void |
★ |
rs.AfterLast() |
移動到最後一筆之後 |
void |
★ |
rs.moveToCurrentRow() |
移動到上一次記載的位置 |
void |
★ |
rs.moveToInsertRow() |
移動到欲新增的位置 |
void |
★ |
|
|
|
|
rs.getRow() |
取ROW的值 |
int |
★ |
rs.getString(n) |
取第N個欄位的資料 |
String |
|
rs.getString(“欄位名”) |
取” 欄位名”欄位的資料 |
String |
|
|
也可以取Int、Long、float、double、boolean、byte、date、Time、Object、short |
|
|
|
|
|
|
rs.isBeforeFirst() |
判斷是否在第一筆之前 |
boolean |
★ |
rs.isAfterLast() |
判斷是否在最後一筆之後 |
boolean |
★ |
rs.isFirst() |
判斷是否在第一筆 |
boolean |
★ |
rs.isLast() |
判斷是否在最後一筆 |
boolean |
★ |
rs.wasNull() |
判斷是否為空值 |
boolean |
★ |
|
|
|
|
rs.close() |
關閉目前的ResultSet物件 |
|
|
|
|
|
|
rs.DeleteRow() |
刪除指標目前所指的列 |
void |
★ |
rs.insertRow() |
新增一筆資料到ResultSet中 |
void |
★ |
rs.UpdateRow() |
將內容更新至資料庫內 |
void |
★ |
|
|
|
|
★ 標記 需與ResultSet.TYPE_SCROLL_SENSITIVE搭配使用
EX: 在一開始宣告時:
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
接這我來介紹實際的使用方法
<%
新增與刪除記錄--insertRow、deleteRow用法
Connection con = DriverManager.getConnection(strUrl);
sql = "select * from 資料表名稱";
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(sql);
// 處理資料
rs.moveToInsertRow(); //移到指標至新增記錄上
rs.updateString(欄位格(int), "欄位值");
rs.updateString(欄位格(int), "欄位值");
rs.updateString("欄位名稱", "欄位值");
rs.insertRow();//新增上
rs = stmt.executeQuery(sql);
rs.first(); //移到符合條件的第一筆記錄
rs.deleteRow(); //刪除該筆記錄
// 關閉ResultSet與Statement物件
if (rs != null) rs.close();
if (stmt != null) stmt.close();
// 關閉Connection物件
if (con != null) con.close();
%>
修改記錄--absolute、relative、updateRow
<%
Connection con = DriverManager.getConnection(strUrl);
sql = "select * from 資料表名稱";
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(sql);
// 處理資料
// ResultSetMetaData rsmd = rs.getMetaData();
// intCols = rsmd.getColumnCount(); //取得欄位總數
rs.absolute(14); //移到第14筆記錄
rs.updateString(欄位格(int), "欄位值");
rs.updateString(欄位格(int), "欄位值");
rs.updateString("欄位名稱", "欄位值");
rs.updateRow();
//反悔時可用下一道指令取消
//rs.cancelRowUpdates();
rs.relative(-10); //移到第4筆記錄 (14-10=4)
rs.updateString(欄位格(int), "欄位值");
rs.updateString(欄位格(int), "欄位值");
rs.updateString("欄位名稱", "欄位值");
rs.updateRow();
rs.beforeFirst();
while (rs.next()) {
//xxSTR=rs.getString("欄位名稱"); //取字串資料
//xxINT=rs.getInt("欄位名稱"); //取數值資料
}
// 關閉ResultSet與Statement物件
if (rs != null) rs.close();
if (stmt != null) stmt.close();
// 關閉Connection物件
if (con != null) con.close();
%>
參考資料:最新JSP2.1動態網頁技術實作 碩博出版
留言列表