以下是我自行整理的一些筆記,歡迎查閱 但要轉發,請註明出處謝謝!
尊重作者也尊重自己!

首先要先介紹 
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);

 


 

接這我來介紹實際的使用方法

<%
新增與刪除記錄--
insertRowdeleteRow用法

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動態網頁技術實作 碩博出版

 

arrow
arrow

    penguin1989930 發表在 痞客邦 留言(0) 人氣()