以下是我自行整理的一些筆記,歡迎查閱 但要轉發,請註明出處謝謝!
尊重作者也尊重自己!
首先要先介紹
createStatement()裡面的一些參數
以下是游標類型
1.ResultSet.TYPE_FORWARD_ONLY 內定的游標類型,只能往前移動紀錄,不能往回走。最有效率,最廣泛使用!
2.ResultSet.TYPE_SCROLL_INSENSITIVE
提供資料的一個靜態拷貝,允許ResultSet在任意形式中移動,但無法檢閱其他人之新增刪除修改的紀錄, 簡單說就是產生此類游標ResultSet便和原始資料來源切斷關係。
3.ResultSet.TYPE_SCROLL_SENSITIVE 此類型允許我們檢視其他人所做的新增刪除修改的紀錄,
如果人家變更資料表的話,他會立即反應在ResultSet之中。缺點是較佔記憶體。
尊重作者也尊重自己!
首先要先介紹
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 可供多人同時修改。
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);
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
接這我來介紹實際的使用方法
<%
新增與刪除記錄--insertRow、deleteRow用法
新增與刪除記錄--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();//新增上
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();
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("欄位名稱"); //取數值資料
}
<%
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();
%>
if (rs != null) rs.close();
if (stmt != null) stmt.close();
// 關閉Connection物件
if (con != null) con.close();
%>
參考資料:最新JSP2.1動態網頁技術實作 碩博出版
沒有留言:
張貼留言