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)
主站蜘蛛池模板:
亚洲av永久无码天堂网
|
亚洲中文字幕视频国产
|
日韩中文字幕精品免费一区
|
亚洲精品免费视频
|
午夜免费福利小电影
|
亚洲午夜免费视频
|
7x7x7x免费在线观看
|
5g影院5g天天爽永久免费影院
|
97av免费视频
|
成年人免费的视频
|
欧美日韩国产免费一区二区三区
|
久久99九九国产免费看小说
|
成人免费午夜在线观看
|
国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费
|
久久爰www免费人成
|
一级毛片免费观看不卡视频
|
一级毛片**不卡免费播
|
成视频年人黄网站免费视频
|
好男人视频社区精品免费
|
国产免费资源高清小视频在线观看
|
免费一级做a爰片久久毛片潮喷
|
亚洲另类激情专区小说图片
|
亚洲精品成人网站在线观看
|
亚洲综合婷婷久久
|
亚洲乱码中文论理电影
|
亚洲依依成人亚洲社区
|
羞羞漫画小舞被黄漫免费
|
和老外3p爽粗大免费视频
|
免费网站看av片
|
成年人免费的视频
|
国产一卡二卡≡卡四卡免费乱码
|
国产成人毛片亚洲精品
|
久久精品国产亚洲AV无码娇色
|
最新亚洲春色Av无码专区
|
免费一级毛片在线播放放视频
|
a级毛片免费高清毛片视频
|
四虎最新永久免费视频
|
精品免费国产一区二区三区
|
国产成人精品久久亚洲高清不卡
|
亚洲电影国产一区
|
亚洲国产精品精华液
|