前言 本文根据实例详细介绍了如何在tomcat中配置数据源。并且十分详细的介绍了JDBC简介,事务处理,数据源简介,配置数据源。本文从最基础的知识点开始讲起,让不太了解tomcat的学者对其在头脑里有一个十分清晰、透彻的了解。
) j7 B3 |! B& A" F6 F( p 开发环境: q- g0 d7 z3 O/ O8 f( z
本文的环境:JDK1.4.2,TOMCAT5.0.28,Oracle9i4 ~% O: c* Z& r4 ]; V
JDBC简介
0 Q# e& b% h/ }% m* q 提到数据源,那就不能不说JDBC。JDBC是Java Database Connectivity的缩写。在java.sql包中提供了JDBC API,定义了访问数据库的接口和类。但是JDBC API不能直接访问数据库,必须依赖于数据库厂商提供的JDBC驱动程序,即JDBC DRIVER。
4 c9 O5 L. I4 W9 E' y% h Java.sql中常用的接口和类如下:' U1 B4 a+ m4 I5 x4 t' g, l& \
Driver接口和DriverManager类
6 ]; k9 F4 [: }: {& j Connection
5 n; l6 b+ z# J. d/ B) d Statement0 K) r% K- G" U$ H. U( f
PreparedSataement% |; |& Y3 d- m- r$ L1 Y3 T
ResultSet
1 R- A- o! [, G2 V, O" u& r( X 1.Driver接口和DriverManager类
3 r1 q) s/ j$ i' x( B DriverManager类用来建立和数据库的连接以及管理JDBC驱动程序,常用方法如下:/ `: a1 [% p Y
registerDriver(Driver driver) 在DriverManager中注册JDBC驱动程序
! D$ A4 \ N( F: {& i7 f* c) c getConnection(String url,String user,String pwd) 建立和数据库的连接,返回Connection对象
9 M, k$ O8 z& Z- s$ `# H setLoginTimeOut(int seconds) 设定等待数据库连接的最长时间
# u; O! K n' w) { setLogWriter(PrintWriter out) 设定输入数据库日至的PrintWriter对象
) V: Q" E9 d- T 2.Connection- Z6 \" Y/ a, Q0 G3 j9 X' d; H
Connection代表和数据库的连接,其常用方法如下: 0 S/ f7 E& G R& v% k% u) D% P
getMetaData() 返回数据库的MetaData数据。MetaData数据包含了数据库的相关信息,例如当前数据库连接的用户名、使用的JDBC驱动程序、数据库允许的最大连接数、数据库的版本等等。 0 e% X4 q/ n* ?( R9 Q0 l: O
createStatement() 创建并返回Statement对象
& }, ?/ Q1 v! b. Z2 t, W PrepareStatement(String sql) 创建并返回prepareStatement对象 4 d+ F2 V* U, \# n, w
3.Statement/ C3 {4 p6 G. P" n4 m( Z; N
Statement用来执行静态sql语句。例如,对于insert、update、delete语句,调用executeUpdate(String sql)方法,而select语句可以调用executeQuery(String sql)方法,executeQuery(String sql)方法返回ResultSet对象。
1 Z0 a% G8 v) D+ T- x 4.PrepareStatement
' N* _/ O) V% E9 q PrepareStatement用于执行动态的sql语句,即允许sql语句中包含参数。使用方法为:
/ r# L& _# z* r String sql = “select col1 from tablename where col2=? And col3=?”;
0 ^6 q6 Y2 W8 L; x- A6 C; v2 p- T; w* p PrepareStatement perpStmt = conn.preparestatement(sql);
; u# N7 a# |; H1 ? perpStmt.setstring(1,col2Value);
5 C$ m1 F* y- D% w perpStmt.setFloat(2,col3Value);
; \0 D$ W/ }% T( q% w" N; T ResultSet rs = perpStmt.executeQuery();
; s" d. ^) s+ U a. q8 ? _4 w) L: @
5.ResultSet
+ H3 |& g' u( P/ X( ?7 ~ ResultSet用来表示select语句查询得到的记录集,一个StateMent对象在同一时刻只能打开一个ResultSet对象。通过ResultSet的getXXX()方法来得到字段值。ResultSet提供了getString()、getFloat()、getInt()等方法。可以通过字段的序号或者字段的名字来制定获取某个字段的值。例如:在上例中getString(0),getString(col1)都可以获得字段col1的值。 |