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)
主站蜘蛛池模板:
色播亚洲视频在线观看
|
亚洲成年人免费网站
|
任你躁在线精品免费
|
亚洲国产精品第一区二区
|
免费看h片的网站
|
黑人粗长大战亚洲女2021国产精品成人免费视频
|
国产国产人免费视频成69大陆
|
最新亚洲成av人免费看
|
亚洲一欧洲中文字幕在线
|
四虎影库久免费视频
|
一级毛片aaaaaa免费看
|
日本系列1页亚洲系列
|
亚洲国产一区国产亚洲
|
国产jizzjizz免费视频
|
久久99国产乱子伦精品免费
|
久久亚洲精品成人无码
|
亚洲精品国产成人99久久
|
www.亚洲色图.com
|
黄页网站免费观看
|
本免费AV无码专区一区
|
亚洲精品无码成人片久久不卡
|
亚洲AV无码成人精品区日韩
|
亚洲AV无码一区东京热久久
|
免费看又爽又黄禁片视频1000
|
久久国产乱子伦精品免费不卡
|
亚洲AV日韩AV永久无码色欲
|
亚洲国产精品线在线观看
|
青青青国产色视频在线观看国产亚洲欧洲国产综合
|
亚洲日本成本人观看
|
亚洲AV午夜成人片
|
亚洲第一福利网站在线观看
|
美女视频黄是免费的网址
|
国产午夜免费高清久久影院
|
色偷偷亚洲男人天堂
|
久久久久se色偷偷亚洲精品av
|
亚洲乱亚洲乱妇无码
|
久久久久亚洲AV无码网站
|
亚洲无码黄色网址
|
在线观看成人免费视频
|
中文字幕免费高清视频
|
三级黄色在线免费观看
|