Scott Zone
似水流年,勤勉無價
BlogJava
首頁
新隨筆
聯系
聚合
管理
posts - 27, comments - 14, trackbacks - 0
JDBC之代碼復用(轉)
在使用JDBC連接數據庫的時,我們會采用executeQuery(String sql)獲得一個結果集。當數據庫結構變化或者獲得其他數據庫表結果集的時候我們需要將ResultSet結果集根據不同的數據結構重新遍歷。
如何才能建立一個與數據庫結構無關的JDBC連接呢?我們可以通過使用ResultSetMetaData()方法獲得表結構。然后使用Object[]數組遍歷結果集。當我們要取得相應的結果時,我們可以使用Iterator迭代器。只要遍歷迭代器就可以取出結果。
下面是我寫的一個方法:
1
import
java.math.BigDecimal;
2
import
java.sql.Connection;
3
import
java.sql.DriverManager;
4
import
java.sql.ResultSet;
5
import
java.sql.ResultSetMetaData;
6
import
java.sql.SQLException;
7
import
java.sql.Statement;
8
import
java.util.ArrayList;
9
import
java.util.Iterator;
10
import
java.util.List;
11
12
public
class
newJdbc
{
13
private
String url
=
"
jdbc:oracle:thin:@localhost:1521:nitpro
"
;
14
15
private
String dbUserName
=
"
scott
"
;
16
17
private
String dbUserPassword
=
"
tiger
"
;
18
19
private
Connection conn
=
null
;
20
21
private
Statement stmt
=
null
;
22
23
private
ResultSet rs
=
null
;
24
25
public
newJdbc()
{
26
try
{
27
Class.forName(
"
oracle.jdbc.driver.OracleDriver
"
);
28
}
catch
(ClassNotFoundException e)
{
29
e.printStackTrace();
30
}
31
}
32
33
public
Connection getConnection()
{
34
try
{
35
conn
=
DriverManager.getConnection(url, dbUserName, dbUserPassword);
36
}
catch
(SQLException e)
{
37
e.printStackTrace();
38
}
39
return
conn;
40
}
41
42
public
void
close(ResultSet rs, Statement stmt, Connection conn)
{
43
if
(rs
!=
null
)
{
44
try
{
45
rs.close();
46
}
catch
(SQLException e)
{
47
e.printStackTrace();
48
}
49
}
50
if
(stmt
!=
null
)
{
51
try
{
52
stmt.close();
53
}
catch
(SQLException e)
{
54
e.printStackTrace();
55
}
56
}
57
if
(conn
!=
null
)
{
58
try
{
59
conn.close();
60
}
catch
(SQLException e)
{
61
e.printStackTrace();
62
}
63
}
64
}
65
66
public
List query(String sql)
{
67
List list
=
new
ArrayList();
68
69
conn
=
this
.getConnection();
70
try
{
71
stmt
=
conn.createStatement();
72
rs
=
stmt.executeQuery(sql);
73
//
獲取數據庫表結構
74
ResultSetMetaData rsm
=
rs.getMetaData();
75
//
取得數據庫的列數
76
int
col
=
rsm.getColumnCount();
77
//
生成col長度的Object數組
78
Object[] obj
=
new
Object[col];
79
//
遍歷結果集,將結果存入Object數組
80
while
(rs.next())
{
81
for
(
int
i
=
0
; i
<
col; i
++
)
{
82
obj[i]
=
rs.getObject(i
+
1
);
83
}
84
list.add(obj);
85
}
86
}
catch
(SQLException e)
{
87
e.printStackTrace();
88
}
finally
{
89
this
.close(rs, stmt, conn);
90
}
91
return
list;
92
}
93
94
public
void
update(String sql)
{
95
try
{
96
conn
=
this
.getConnection();
97
stmt
=
conn.createStatement();
98
stmt.executeUpdate(sql);
99
}
catch
(SQLException e)
{
100
e.printStackTrace();
101
}
102
}
103
104
public
static
void
main(String args[])
{
105
newJdbc nj
=
new
newJdbc();
106
String sql
=
"
select * from users
"
;
107
List list
=
nj.query(sql);
108
//
返回list的迭代器
109
Iterator it
=
list.iterator();
110
//
遍歷迭代器,取出結果
111
while
(it.hasNext())
{
112
Object[] o
=
(Object[]) it.next();
113
int
id
=
((BigDecimal) o[
0
]).intValue();
114
System.out.println(id);
115
}
116
117
}
118
}
119
posted on 2007-07-12 16:30
Scott.Pan
閱讀(375)
評論(0)
編輯
收藏
所屬分類:
代碼收藏夾
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
insertAdjacentHTML方法示例
轉JS校驗
封裝了Jakarta 文件上傳功能的一個類(轉)
幾種js實現的動態多文件上傳
動態WEB應用中的用戶SESSION管理方案
JDBC之代碼復用(轉)
目錄樹程序
Copyright ©2025 Scott.Pan Powered By:
博客園
模板提供:
滬江博客
<
2007年7月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(4)
給我留言
查看公開留言
查看私人留言
隨筆分類
Database
IM例舉(1)
J2EE(2)
JBPM(1)
Liferay(7)
SSH(2)
Web開發
代碼收藏夾(7)
生活記事(6)
目錄服務(3)
隨筆檔案
2007年8月 (5)
2007年7月 (22)
搜索
最新評論
1.?re: Portlet學習分析筆記[未登錄]
來學習一下
--zz
2.?re: 幾種js實現的動態多文件上傳
最后一種不能用
--11
3.?re: insertAdjacentHTML方法示例[未登錄]
1
--1
4.?re: Portlet學習分析筆記
寫的很不錯。學習了
--chailieyang
5.?re: insertAdjacentHTML方法示例
評論內容較長,點擊標題查看
--啊打發
閱讀排行榜
1.?insertAdjacentHTML方法示例(23448)
2.?經典英語200句(4365)
3.?Portlet學習分析筆記(3622)
4.?SearchContainer的用法說明(2796)
5.?幾種js實現的動態多文件上傳(2773)
評論排行榜
1.?Portlet學習分析筆記(4)
2.?insertAdjacentHTML方法示例(2)
3.?幾種js實現的動態多文件上傳(1)
4.?經典英語200句(1)
5.?Liferay項目中問題及解決方法列舉(1)
主站蜘蛛池模板:
亚洲国产成人久久综合一区77
|
国产免费一区二区三区在线观看
|
麻花传媒剧在线mv免费观看
|
亚洲精品无码MV在线观看
|
eeuss影院www天堂免费
|
亚洲国产精品国产自在在线
|
国产av无码专区亚洲av毛片搜
|
国产精品视_精品国产免费
|
亚洲狠狠色丁香婷婷综合
|
天堂在线免费观看中文版
|
亚洲七久久之综合七久久
|
日韩激情无码免费毛片
|
美女又黄又免费的视频
|
亚洲国产成人精品久久久国产成人一区二区三区综
|
免费国产叼嘿视频大全网站
|
亚洲中文字幕精品久久
|
99久久99久久免费精品小说
|
亚洲精品美女在线观看
|
国产大片线上免费观看
|
亚洲熟妇久久精品
|
亚洲AV蜜桃永久无码精品
|
亚美影视免费在线观看
|
久久夜色精品国产亚洲AV动态图
|
91免费在线播放
|
亚洲视频一区二区三区四区
|
四虎影视www四虎免费
|
香蕉视频免费在线
|
亚洲午夜久久久影院伊人
|
久久精品人成免费
|
亚洲色成人WWW永久在线观看
|
精品免费久久久久久成人影院
|
久久久久亚洲国产AV麻豆
|
国产精品福利在线观看免费不卡
|
国产亚洲免费的视频看
|
97在线观看永久免费视频
|
亚洲国产区男人本色
|
国产亚洲AV手机在线观看
|
在线看片韩国免费人成视频
|
羞羞漫画在线成人漫画阅读免费
|
亚洲V无码一区二区三区四区观看 亚洲αv久久久噜噜噜噜噜
|
亚洲综合色在线观看亚洲
|