日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java jdbc rowset_JAVA基础知识之JDBC——RowSet

發布時間:2025/3/8 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java jdbc rowset_JAVA基础知识之JDBC——RowSet 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

RowSet概念

在C#中,提供了一個DataSet,可以把數據庫的數據放在內存中進行離線操作(讀寫),操作完成之后再同步到數據庫中去,Java中則提供了類似的功能RowSet.

RowSet接口繼承自ResultSet接口。與ResultSet相比,RowSet默認是可滾動、可更新、可序列化的結果集,可以作為JavaBean來方便地在網絡上傳輸,用于同步兩端數據。對于離線RowSet而言,

程序從創建RowSet時就已經把數據load進內存,因此可以更好地利用內存性能,降低數據庫服務器的負載,提高程序性能。

RowSet接口下包含了JdbcRowSet, CachedRowSet, FilteredRowSet, JoinRowSet, WebRowSet,除了JdbcRowSet之外,后面四個都是離線RowSet,它們之間的繼承關系如下,

RowSetFactory

在JDK1.6及以前的版本中,如果要使用JdbcRowSet,則必須使用JdbcRowSetImpl的構造器來構造對象,但是在編譯的時候會有警告,因此JdbcRowSetImpl是內部專用的API,在未來版本可能會刪除。這種獲取JdbcRowSet的方式是不推薦的,因為使用內部API,在將來的版本中可能不兼容,而且這樣的程序直接與具體的實現類JdbcRowSetImpl耦合,不利于維護和升級。

在JDK1.7中,這個問題得到了改善。JDK1.7引入了RowSetFactory和RowSetProvider接口,其中RowSetProvider負責創建RowSetFactory,而RowSetFactory則可以通過以下方法創建RowSet實例,

createCachedRowSet()

createFilteredRowSet()

createJdbcRowSet()

createJoinRowSet()

createWebRowSet()

通過RowSetFactory,程序就可以與RowSet的實現類分離,避免了直接使用具體的實現類JdbcRowSetImpl。

創建對象時可以傳入ResultSet實例填充RowSet,也可以在創建JdbcRowSet實例之后通過execute(sql)方法得到數據填充RowSet,

下面演示使用RowSetFactory和RowSetProvider接口獲取RowSet實例并使用的方法,

1 packagedb;2

3 importjava.io.FileInputStream;4 importjava.io.FileNotFoundException;5 importjava.io.IOException;6 importjava.sql.Connection;7 importjava.sql.DriverManager;8 importjava.sql.SQLException;9 importjava.util.Properties;10

11 importjavax.sql.rowset.JdbcRowSet;12 importjavax.sql.rowset.RowSetFactory;13 importjavax.sql.rowset.RowSetProvider;14

15

16 public classRowSetFactoryTest {17 privateString driver;18 privateString url;19 privateString user;20 privateString pass;21 public void initParam(String paramFile) throwsFileNotFoundException, IOException, ClassNotFoundException {22 //用Properties類加載屬性文件

23 Properties prop = newProperties();24 prop.load(newFileInputStream(paramFile));25 driver = prop.getProperty("driver");26 url = prop.getProperty("url");27 user = prop.getProperty("user");28 pass = prop.getProperty("pass");29 Class.forName(driver);30 }31

32 public void update(String sql) throwsSQLException {33 RowSetFactory factory =RowSetProvider.newFactory();34

35 try(36 //使用RowSet的execute方式返回數據,則不再需DriverManager連接數據庫了37 //Connection conn = DriverManager.getConnection(url, user, pass);

38 /*

39 * for JDK1.640 * JdbcRowSet jdbcRs = new JdbcRowSetImpl(conn);41 */

42 //for JDK 1.7

43 JdbcRowSet jdbcRs =factory.createJdbcRowSet();44 ) {45 jdbcRs.setUrl(url);46 jdbcRs.setUsername(user);47 jdbcRs.setPassword(pass);48 jdbcRs.setCommand(sql);49 jdbcRs.execute();50

51 jdbcRs.afterLast();52 //向前滾動結果集

53 while(jdbcRs.previous()) {54 System.out.println(jdbcRs.getInt(1)+"\t"+jdbcRs.getString(2)+"\t"+jdbcRs.getString(3));55

56 if (jdbcRs.getInt("jdbc_id") == 3) {57 //修改指定行記錄,因為 JdbcRowSet 繼承自 ResultSet, 所以修改記錄的方式也一樣

58 jdbcRs.updateString("jdbc_name", "小明");59 jdbcRs.updateRow();60 System.out.println("修改成功: ");61 System.out.println(+jdbcRs.getInt(1)+"\t"+jdbcRs.getString(2)+"\t"+jdbcRs.getString(3));62 }63

64 }65 }66 }67

68 public static void main(String[] args) throwsFileNotFoundException, ClassNotFoundException, IOException, SQLException {69 RowSetFactoryTest jt = newRowSetFactoryTest();70 jt.initParam("mysql.ini");71 jt.update("select * from jdbc_test");72 }73 }

執行上面程序會發現第3行被修改了,需要注意的是JdbcRowSet并不是離線的RowSet,因此需要在數據庫保持連接的情況下才能修改數據

因為JdbcRowSet接口繼承自ResultSet,所以修改數據的方法跟ResultSet一樣的。 程序執行結果如下,

1 27學生名27 學生名282 26學生名26 學生名273 25學生名25 學生名264 24學生名24 學生名255 23學生名23 學生名246 22學生名22 學生名237 21學生名21 學生名228 20學生名20 學生名219 19學生名19 學生名2010 18學生名18 學生名1911 17學生名17 學生名1812 16學生名16 學生名1713 15學生名15 學生名1614 14學生名14 學生名1515 13學生名13 學生名1416 12學生名12 學生名1317 11學生名11 學生名1218 10學生名10 學生名1119 9學生名9 學生名1020 8學生名8 學生名921 7學生名7 學生名822 6學生名6 學生名723 5學生名5 學生名624 4學生名4 學生名525 3小明 小強26 修改成功:27 3小明 小強28 2學生名2 學生名329 1 學生名1 學生名2

View Code

總結

以上是生活随笔為你收集整理的java jdbc rowset_JAVA基础知识之JDBC——RowSet的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲偷怕 | 亚洲国产情侣 | 亚洲中文字幕在线观看 | 日韩视频一区二区在线观看 | 天天插天天操 | 国产成人一区二区三区别 | 五月激情丁香婷婷 | 国产a级黄色片 | 精品视频第一页 | 国产精品一区二区视频 | 潘金莲一级淫片aaaaa武则天 | 操天天操| 日韩精品欧美 | 国产成人在线一区 | 人妖交videohd另类 | 日本韩国视频 | 日韩亚洲精品在线 | 欧美高清视频在线观看 | 国产呦系列 | 女同性恋一区二区三区 | 日韩爽片| 国产亚洲精品久久久 | 亚洲av综合色区无码二区爱av | 日本xxxx色| 婷婷色婷婷开心五月四房播播 | 噜噜色网| 日本爱爱免费视频 | 九九天堂网 | 亚洲AV乱码国产精品观看麻豆 | 蜜臀在线播放 | 亚洲午夜精品一区二区三区他趣 | 深夜天堂 | 亚洲区在线播放 | 黄视频在线播放 | 色眯眯影院 | 欧美成人精品一区二区综合免费 | 综合一区 | 成人91网站 | 日本一区二区三区在线播放 | 依依成人在线视频 | 爱爱动态图| 伊人福利视频 | 激情第四色 | 香蕉婷婷 | 日韩美一区二区 | 色综合视频在线 | 美女bb视频 | 三年中文在线观看中文版 | 女同性恋一区二区三区 | 中国一级黄色 | 国产精品永久 | 欧美一及片 | www.国产欧美 | 日本不卡一区在线 | www.久久久.com | 久青草影院 | 国精产品一区一区三区免费视频 | 97在线播放| 国产麻豆一区二区 | 久久久久香蕉 | 精品少妇人妻av免费久久洗澡 | 亚洲精品国产手机 | 日韩精品在线一区二区 | 咪咪色图| 欧美激情喷水 | 牛人盗摄一区二区三区视频 | 婷婷国产成人精品视频 | 国产精品无码成人网站视频 | 黄色国产精品 | 日韩视频福利 | 日本三级在线 | 免费大片在线观看www | 91官网视频| 伊人青青草视频 | 欧美日韩不卡一区二区 | 久久久男女 | 精品国产99久久久久久宅男i | 亚洲av综合一区 | 日韩一区二区视频在线观看 | www视频在线观看免费 | 国产乱淫av片杨贵妃 | wwwxx国产 | 精品国产乱码久久久久久预案 | 日韩有码在线视频 | 黄色美女毛片 | av在线在线| 男男免费视频 | 国产精品每日更新 | 小sao货大ji巴cao死你 | 性福网站 | 久久久久视 | 伊人激情网 | 四虎影视免费永久大全 | 亚洲石原莉奈一区二区在线观看 | 亚洲天堂偷拍 | 欧美日本国产在线 | 欧美成人猛片aaaaaaa | 午夜电影网一区 | 精品国产一区二区三区无码 |