启天JAVA培训社区's Archiver

junsan 发表于 2008-9-7 12:48

Struts2建立一个数据库连接组件

[size=3][font=宋体]在一般的大型项目开发中,都需要建立一个数据库连接组件,其他的业务逻辑或者是[/font][font=Times New Roman]DAO[/font][font=宋体],如果需要访问数据库,只需要调用该组件即可,如代码[/font][font=Times New Roman]15.3[/font][font=宋体]所示,为一个标准的[/font][font=Times New Roman]MySQL[/font][font=宋体]数据库连接组件。[/font][/size]
[size=3][font=黑体]代码[/font]15.3
MySQL[font=黑体]数据库连接组件[/font][/size]

[size=2][font=Courier New]package bbs.db;[/font][/size]
[size=2][font=Courier New]import java.sql.Connection;[/font][/size]
[size=2][font=Courier New]import java.sql.DriverManager;[/font][/size]
[size=2][font=Courier New]import java.sql.ResultSet;[/font][/size]
[size=2][font=Courier New]import java.sql.SQLException;[/font][/size]
[size=2][font=Courier New]import java.sql.Statement;[/font][/size]
[size=2][font=Courier New]import javax.naming.*;[/font][/size]
[size=2][font=Courier New]import javax.sql.DataSource;[/font][/size]
[size=2][font=Courier New]public class DbConn {[/font][/size]
[size=2][font=Courier New]
private static DataSource ds = null;[/font][/size]
[size=2][font=Courier New]
private static Connection conn = null;[/font][/size]
[size=2][font=Courier New]
// [/font][font=宋体]使用[/font][font=Courier New]JDBC[/font][font=宋体]连接数据库[/font][/size]
[size=2][font=Courier New]
public static Connection getConn_jdbc() {[/font][/size]
[size=2][font=Courier New]
try {[/font][/size]
[size=2][font=Courier New]
//[/font][font=宋体]定义[/font][font=Courier New]url[/font][font=宋体],指定[/font][font=Courier New]MySQL[/font][font=宋体]数据库端口和数据库名[/font][/size]
[size=2][font=Courier New]
String url = "jdbc:mysql://localhost:3306/bbsdb";[/font][/size]
[size=2][font=Courier New]
//[/font][font=宋体]定义用户名和密码[/font][/size]
[size=2][font=Courier New]
String username = "root";[/font][/size]
[size=2][font=Courier New]
String password = "pla";[/font][/size]
[size=2][font=Courier New]
Class.forName("com.mysql.jdbc.Driver").newInstance();[/font][/size]
[size=2][font=Courier New]
conn = DriverManager.getConnection(url, username, password);[/font][/size]
[size=2][font=Courier New]
return conn;[/font][/size]
[size=2][font=Courier New]
} catch (Exception e) {[/font][/size]
[size=2][font=Courier New]
System.err.println("[/font][font=宋体]数据库连接异常[/font][font=Courier New]: " + e.getMessage());[/font][/size]
[size=2][font=Courier New]
return null;[/font][/size]
[size=2][font=Courier New]
}[/font][/size]
[size=2][font=Courier New]
}[/font][/size]
[size=2][font=Courier New]
// [/font][font=宋体]使用数据源连接[/font][/size]
[size=2][font=Courier New]
public static Connection getCon() {[/font][/size]
[size=2][font=Courier New]
try {[/font][/size]
[size=2][font=Courier New]
//[/font][font=宋体]使用数据源访问数据库[/font][/size]
[size=2][font=Courier New]
InitialContext ctx = new InitialContext();[/font][/size]
[size=2][font=Courier New]
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/bbsdb");[/font][/size]
[size=2][font=Courier New]
conn = ds.getConnection();[/font][/size]
[size=2][font=Courier New]
return conn;[/font][/size]
[size=2][font=Courier New]
} catch (Exception e) {[/font][/size]
[size=2][font=Courier New]
System.err.println("[/font][font=宋体]数据库连接异常[/font][font=Courier New]: " + e.getMessage());[/font][/size]
[size=2][font=Courier New]
return null;[/font][/size]
[size=2][font=Courier New]
}[/font][/size]
[size=2][font=Courier New]
}[/font][/size]
[size=2][font=Courier New]
// [/font][font=宋体]关闭数据库连接[/font][/size]
[size=2][font=Courier New]
public void CloseConn() {[/font][/size]
[size=2][font=Courier New]
try {[/font][/size]
[size=2][font=Courier New]
conn.close();[/font][/size]
[size=2][font=Courier New]
} catch (Exception e) {[/font][/size]
[size=2][font=Courier New]
System.err.println("[/font][font=宋体]数据库连接关闭异常[/font][font=Courier New]: " + e.getMessage());[/font][/size]
[size=2][font=Courier New]
}[/font][/size]
[size=2][font=Courier New]
}[/font][/size]
[size=2][font=Courier New]
// [/font][font=宋体]测试数据库连接[/font][/size]
[size=2][font=Courier New]
public static void main(String[] a) {[/font][/size]
[size=2][font=Courier New]
Connection conn;[/font][/size]
[size=2][font=Courier New]
DbConn dc = new DbConn();[/font][/size]
[size=2][font=Courier New]
conn = dc.getConn_jdbc();[/font][/size]
[size=2][font=Courier New]
try {[/font][/size]
[size=2][font=Courier New]
Statement stmt = conn.createStatement();[/font][/size]
[size=2][font=Courier New]
String strSql = "select * from
bbs";[/font][/size]
[size=2][font=Courier New]
//[/font][font=宋体]查询建立数据集[/font][/size]
[size=2][font=Courier New]
ResultSet rs = stmt.executeQuery(strSql);[/font][/size]
[size=2][font=Courier New]
while (rs.next()) {[/font][/size]
[size=2][font=Courier New]
System.out.println("[/font][font=宋体]标题:[/font][font=Courier New]" + rs.getString("title"));[/font][/size]
[size=2][font=Courier New]
}[/font][/size]
[size=2][font=Courier New]
} catch (SQLException e) {[/font][/size]
[size=2][font=Courier New]
e.printStackTrace();[/font][/size]
[size=2][font=Courier New]
} finally {[/font][/size]
[size=2][font=Courier New]
// [/font][font=宋体]注意,必须在最后关闭数据库连接,否则将严重影响系统性能[/font][/size]
[size=2][font=Courier New]
dc.CloseConn();[/font][/size]
[size=2][font=Courier New]
}[/font][/size]
[size=2][font=Courier New]
}[/font][/size]
[size=2][font=Courier New]}[/font][/size]
[size=3][font=宋体]该连接组件提供了两种访问数据库的方式:使用基本的[/font][font=Times New Roman]JDBC[/font][font=宋体]和数据源。一般的应用都建议使用数据源的方式来访问数据库,该组件中,使用[/font][font=Times New Roman]main[/font][font=宋体]函数对[/font][font=Times New Roman]JDBC[/font][font=宋体]连接方式进行了测试,在后面的论坛示例中,就是使用了本数据库连接组件。[/font][/size]
[size=3][/size][font=宋体][size=11pt]★[/size][/font][size=11pt][font=Times New Roman] [/font][/size][font=黑体][size=11pt]注意[/size][/font][size=11pt][font=Times New Roman] [/font][/size][font=宋体][size=11pt]★[/size][/font][size=11pt][/size]
[size=3][font=Times New Roman][font=方正楷体简体]在[/font]main[font=方正楷体简体]测试函数中,不能采用数据源的方式来访问数据库,否则会出现异常,因为[/font]main[font=方正楷体简体]函数是采用一个[/font]Java Apllication[font=方正楷体简体]方式执行的,不能访问[/font]Tomcat[font=方正楷体简体]的上下文内容;但是可以在[/font]Action[font=方正楷体简体]或者是[/font]Action[font=方正楷体简体]所调用的业务逻辑组件中使用数据源的方式来访问数据[/font][font=方正楷体简体]库。[/font][/font][/size]

页: [1]

Powered by Discuz! Archiver 6.1.0F  © 2001-2007 Comsenz Inc.