Scott Zone
似水流年,勤勉無價(jià)
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
posts - 27, comments - 14, trackbacks - 0
JDBC之代碼復(fù)用(轉(zhuǎn))
在使用JDBC連接數(shù)據(jù)庫的時(shí),我們會(huì)采用executeQuery(String sql)獲得一個(gè)結(jié)果集。當(dāng)數(shù)據(jù)庫結(jié)構(gòu)變化或者獲得其他數(shù)據(jù)庫表結(jié)果集的時(shí)候我們需要將ResultSet結(jié)果集根據(jù)不同的數(shù)據(jù)結(jié)構(gòu)重新遍歷。
如何才能建立一個(gè)與數(shù)據(jù)庫結(jié)構(gòu)無關(guān)的JDBC連接呢?我們可以通過使用ResultSetMetaData()方法獲得表結(jié)構(gòu)。然后使用Object[]數(shù)組遍歷結(jié)果集。當(dāng)我們要取得相應(yīng)的結(jié)果時(shí),我們可以使用Iterator迭代器。只要遍歷迭代器就可以取出結(jié)果。
下面是我寫的一個(gè)方法:
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
//
獲取數(shù)據(jù)庫表結(jié)構(gòu)
74
ResultSetMetaData rsm
=
rs.getMetaData();
75
//
取得數(shù)據(jù)庫的列數(shù)
76
int
col
=
rsm.getColumnCount();
77
//
生成col長度的Object數(shù)組
78
Object[] obj
=
new
Object[col];
79
//
遍歷結(jié)果集,將結(jié)果存入Object數(shù)組
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
//
遍歷迭代器,取出結(jié)果
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
閱讀(374)
評論(0)
編輯
收藏
所屬分類:
代碼收藏夾
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
insertAdjacentHTML方法示例
轉(zhuǎn)JS校驗(yàn)
封裝了Jakarta 文件上傳功能的一個(gè)類(轉(zhuǎn))
幾種js實(shí)現(xiàn)的動(dòng)態(tài)多文件上傳
動(dòng)態(tài)WEB應(yīng)用中的用戶SESSION管理方案
JDBC之代碼復(fù)用(轉(zhuǎn))
目錄樹程序
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開發(fā)
代碼收藏夾(7)
生活記事(6)
目錄服務(wù)(3)
隨筆檔案
2007年8月 (5)
2007年7月 (22)
搜索
最新評論
1.?re: Portlet學(xué)習(xí)分析筆記[未登錄]
來學(xué)習(xí)一下
--zz
2.?re: 幾種js實(shí)現(xiàn)的動(dòng)態(tài)多文件上傳
最后一種不能用
--11
3.?re: insertAdjacentHTML方法示例[未登錄]
1
--1
4.?re: Portlet學(xué)習(xí)分析筆記
寫的很不錯(cuò)。學(xué)習(xí)了
--chailieyang
5.?re: insertAdjacentHTML方法示例
評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--啊打發(fā)
閱讀排行榜
1.?insertAdjacentHTML方法示例(23446)
2.?經(jīng)典英語200句(4365)
3.?Portlet學(xué)習(xí)分析筆記(3621)
4.?SearchContainer的用法說明(2796)
5.?幾種js實(shí)現(xiàn)的動(dòng)態(tài)多文件上傳(2772)
評論排行榜
1.?Portlet學(xué)習(xí)分析筆記(4)
2.?insertAdjacentHTML方法示例(2)
3.?幾種js實(shí)現(xiàn)的動(dòng)態(tài)多文件上傳(1)
4.?經(jīng)典英語200句(1)
5.?Liferay項(xiàng)目中問題及解決方法列舉(1)
主站蜘蛛池模板:
99久久人妻精品免费一区
|
亚洲精品色在线网站
|
亚洲今日精彩视频
|
亚洲国产精品va在线播放
|
国产亚洲成人久久
|
亚洲一区二区三区影院
|
日韩亚洲变态另类中文
|
亚洲午夜久久久影院
|
亚洲人成亚洲人成在线观看
|
伊人久久大香线蕉亚洲五月天
|
亚洲综合在线另类色区奇米
|
亚洲午夜福利精品久久
|
一本色道久久综合亚洲精品
|
亚洲va久久久噜噜噜久久天堂
|
亚洲制服中文字幕第一区
|
亚洲视频在线不卡
|
亚洲制服丝袜第一页
|
亚洲日韩一区二区三区
|
久久精品国产亚洲AV
|
美女视频黄a视频全免费网站色
|
无遮挡呻吟娇喘视频免费播放
|
成人免费ā片在线观看
|
久久久久久久久久国产精品免费
|
免费A级毛片无码A∨中文字幕下载
|
**aaaaa毛片免费
|
噼里啪啦电影在线观看免费高清
|
亚洲综合小说久久另类区
|
亚洲国产亚洲综合在线尤物
|
亚洲日本成本人观看
|
免费一级毛片在线播放放视频
|
一级午夜a毛片免费视频
|
a级毛片黄免费a级毛片
|
99久久精品国产免费
|
99视频在线精品免费观看6
|
日本不卡在线观看免费v
|
国产AV无码专区亚洲AWWW
|
亚洲AV美女一区二区三区
|
亚洲日韩AV一区二区三区四区
|
亚洲黄色中文字幕
|
亚洲精品永久在线观看
|
亚美影视免费在线观看
|