代码15.3 MySQL数据库连接组件
1
package bbs.db;2

3
import java.sql.Connection;4

5
import java.sql.DriverManager;6

7
import java.sql.ResultSet;8

9
import java.sql.SQLException;10

11
import java.sql.Statement;12

13
import javax.naming.*;14

15
import javax.sql.DataSource;16

17

public class DbConn
{18

19
private static DataSource ds = null;20

21
private static Connection conn = null;22

23
// 使用JDBC连接数据库24

25

public static Connection getConn_jdbc()
{26

27

try
{28

29
//定义url,指定MySQL数据库端口和数据库名30

31
String url = "jdbc:mysql://localhost:3306/bbsdb";32

33
//定义用户名和密码34

35
String username = "root";36

37
String password = "pla";38

39
Class.forName("com.mysql.jdbc.Driver").newInstance();40

41
conn = DriverManager.getConnection(url, username, password);42

43
return conn;44

45

} catch (Exception e)
{46

47
System.err.println("数据库连接异常: " + e.getMessage());48

49
return null;50

51
}52

53
}54

55
// 使用数据源连接56

57

public static Connection getCon()
{58

59

try
{60

61
//使用数据源访问数据库62

63
InitialContext ctx = new InitialContext();64

65
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/bbsdb");66

67
conn = ds.getConnection();68

69
return conn;70

71

} catch (Exception e)
{72

73
System.err.println("数据库连接异常: " + e.getMessage());74

75
return null;76

77
}78

79
}80

81
// 关闭数据库连接82

83

public void CloseConn()
{84

85

try
{86

87
conn.close();88

89

} catch (Exception e)
{90

91
System.err.println("数据库连接关闭异常: " + e.getMessage());92

93
}94

95
}96

97
// 测试数据库连接98

99

public static void main(String[] a)
{100

101
Connection conn;102

103
DbConn dc = new DbConn();104

105
conn = dc.getConn_jdbc();106

107

try
{108

109
Statement stmt = conn.createStatement();110

111
String strSql = "select * from bbs";112

113
//查询建立数据集114

115
ResultSet rs = stmt.executeQuery(strSql);116

117

while (rs.next())
{118

119
System.out.println("标题:" + rs.getString("title"));120

121
}122

123

} catch (SQLException e)
{124

125
e.printStackTrace();126

127

} finally
{128

129
// 注意,必须在最后关闭数据库连接,否则将严重影响系统性能130

131
dc.CloseConn();132

133
}134

135
}136

137
}138

139

该连接组件提供了两种访问数据库的方式:使用基本的JDBC和数据源。一般的应用都建议使用数据源的方式来访问数据库,该组件中,使用main函数对JDBC连接方式进行了测试,在后面的论坛示例中,就是使用了本数据库连接组件。
在main测试函数中,不能采用数据源的方式来访问数据库,否则会出现异常,因为main函数是采用一个Java Apllication方式执行的,不能访问Tomcat的上下文内容;但是可以在Action或者是Action所调用的业务逻辑组件中使用数据源的方式来访问数据库。
浙公网安备 33010602011771号