通過Orcal和MySql測試過,可行
package com.util;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
/**
* <dl>
* <dt><b>類機能概要:</b></dt><dd>
*
* </dd>
* </dl>
* @copyright :Copyright 2010, IBM ETP. All right reserved.
*【Update History】
* Version Date Company Name Anken-No Anken-Name
* ------- ---------- ---------- -------------- ---------- ------------
* 1.00 2010-9-28 IBM Peng create
*/
public class DBConnection {
private final static String DRIVER_CLASS = "oracle.jdbc.driver.OracleDriver";
private final static String URL = "jdbc:oracle:thin:@localhost:1521:XE";
private final static String USERID = "talk";
private final static String PWD = "sa";
private Connection conn;
private PreparedStatement prepstmt;
private Statement stmt;
/**
* <dl>
* <dt><b>Method機能概要:</b></dt>
* <dd>構造方法,默認創建一個數據庫連接<br>
* 並在內部生成一個Statement對象</dd>
* </dl>
*/
public DBConnection() {
getConn();
try {
stmt = conn.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* <dl>
* <dt><b>Method機能概要:</b></dt>
* <dd>構造方法,默認創建一個數據庫連接<br>
* 並使用參數傳入的SQL語句,創建一個PreparedStatement對象
* </dd>
* </dl>
* @param sql
*/
public DBConnection(String sql) {
getConn();
try {
prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* <dl>
* <dt><b>Method機能概要:</b></dt>
* <dd>私有方法,創建一個數據庫連接
* 並設置回滾點</dd>
* </dl>
*/
private void getConn() {
try {
Class.forName(DRIVER_CLASS);
conn = DriverManager.getConnection(URL, USERID, PWD);
// 禁止自動提交
conn.setAutoCommit(false);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* <dl>
* <dt><b>Method機能概要:</b></dt>
* <dd>得到Connection對象</dd>
* </dl>
* @return Connection
*/
public Connection getConnection() {
return conn;
}
/**
* <dl>
* <dt><b>Method機能概要:</b></dt>
* <dd>向數據庫提交所有改變</dd>
* </dl>
* @throws SQLException
*/
public void commit() throws SQLException {
conn.commit();
}
/**
* <dl>
* <dt><b>Method機能概要:</b></dt>
* <dd>回滾到初始狀態</dd>
* </dl>
* @throws SQLException
*/
public void rollback() throws SQLException {
conn.rollback();
}
/**
* <dl>
* <dt><b>Method機能概要:</b></dt>
* <dd>使用PreparedStatement對象處理傳入的SQL語句</dd>
* </dl>
* @param sql
* @throws SQLException
*/
public void prepareStatement(String sql) throws SQLException {
prepstmt = conn.prepareStatement(sql);
}
public void setString(int index, String value) throws SQLException {
prepstmt.setString(index, value);
}
public void setInt(int index, int value) throws SQLException {
prepstmt.setInt(index, value);
}
public void setBoolean(int index, boolean value) throws SQLException {
prepstmt.setBoolean(index, value);
}
public void setDate(int index, Date value) throws SQLException {
prepstmt.setDate(index, value);
}
public void setLong(int index, long value) throws SQLException {
prepstmt.setLong(index, value);
}
public void setFloat(int index, float value) throws SQLException {
prepstmt.setFloat(index, value);
}
public void setBinaryStream(int index, InputStream in, int length)
throws SQLException {
prepstmt.setBinaryStream(index, in, length);
}
public void clearParameters() throws SQLException {
prepstmt.clearParameters();
}
public PreparedStatement getPreparedStatement() {
return prepstmt;
}
public Statement getStatement() {
return stmt;
}
/**
* 執行Statement查詢語句
*
* @param sql
* @return ArrayList
* @throws Exception
*/
public ArrayList<HashMap<Object, Object>> executeQuery(String sql) throws Exception {
if (stmt != null) {
return this.convertResultSetToArrayList(stmt.executeQuery(sql));
} else {
return null;
}
}
/**
* 執行PreparedStatement查詢語句
*
* @return ArrayList
* @throws Exception
*/
public ArrayList<HashMap<Object, Object>> executeQuery() throws Exception {
if (prepstmt != null) {
return this.convertResultSetToArrayList(prepstmt.executeQuery());
} else {
return null;
}
}
/**
* 執行PreparedStatement查詢語句
* 返回一個ResultSet對象
*
* @return ResultSet
* @throws Exception
*/
public ResultSet executeQueryResultSet() {
ResultSet resultSet = null;
return resultSet;
}
/**
* 執行Statement更改語句
*
* @param sql
* @throws SQLException
*/
public void executeUpdate(String sql) throws SQLException {
if (stmt != null)
stmt.executeUpdate(sql);
}
/**
* 執行PreparedStatement更改語句
*
* @throws SQLException
*/
public void executeUpdate() throws SQLException {
if (prepstmt != null)
prepstmt.executeUpdate();
}
/**
* 轉換記錄集對象爲數組列表對象
*
* @param rs
* @return ArrayList
* @throws Exception
*/
private ArrayList<HashMap<Object, Object>> convertResultSetToArrayList(
ResultSet rs) throws Exception {
// 獲取rs 集合信息對象
ResultSetMetaData rsmd = rs.getMetaData();
// 創建數組列表集合對象
ArrayList<HashMap<Object, Object>> tempList = new ArrayList<HashMap<Object, Object>>();
HashMap<Object, Object> tempHash = null;
// 填充數組列表集合
while (rs.next()) {
// 創建鍵值對集合對象
tempHash = new HashMap<Object, Object>();
for (int i = 0; i < rsmd.getColumnCount(); i++) {
// 遍歷每列數據,以鍵值形式存在對象tempHash中
tempHash.put(rsmd.getColumnName(i + 1).toUpperCase(), rs
.getString(rsmd.getColumnName(i + 1)));
}
// 第一個鍵值對,存儲在tempList列表集合對象中
tempList.add(tempHash);
}
return tempList;// 返回填充完畢的數組列表集合對象
}
/**
* 關閉連接
*/
public void close() {
try {
if (stmt != null) {
stmt.close();
stmt = null;
}
if (prepstmt != null) {
prepstmt.close();
prepstmt = null;
}
conn.close();
conn = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.action;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
import com.util.DBConnection;
public class GetListAction extends ActionSupport{
private List list;
public String execute() throws Exception {
DBConnection con = new DBConnection();
String sql ="select * from admin";
list = con.executeQuery(sql);
con.commit();
con.close();
return SUCCESS;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
}
通過JSTL標籤結合EL表達式,把結果集List顯示到前臺頁面(配置struts.xml就不寫了,注意導入JSTL所需要的架包jstl.jar standard.jar)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>NewList</title>
</head>
<body>
<table width="20%" border="1">
<tr>
<td>行號</td>
<td>姓名</td>
<td>密碼</td>
</tr>
<c:forEach items="${list}" var="list" varStatus="i">
<tr>
<td>${i.index+1 }</td>
<td><a href="index.action?username=${list.USERNAME }&password=${list.PASSWORD }">${list.USERNAME }</a></td>
<td>${list.PASSWORD }</td>
</tr>
</c:forEach>
</table>
</body>
</html>