數據庫操作可以中WEB開發中最常用到的,很多Java開發工具都提供了自動的Data bean WinZard.只要數據庫建立好,相應的操作數據庫的Bean就基本可以自動完成,本人使用Jcreator開發bean,手工錄入覺得也不是很麻煩的事情,下面我常用的數據庫操作bean,完全可以對付訪問量不是很大的系統 :
Mysql類:
import java.sql.*; import java.io.*; /** * 處理數據庫的連接和訪問 * @author sanware bqlr * @version 1.01 */ public class Mysql {
private Connection conn = null; private Statement stmt = null; private PreparedStatement prepstmt = null;
//這是一個全局類,裏面放置數據庫的參數,如數據庫主機 訪問用戶名 密碼等 private static BeansConstants CONST = BeansConstants.getInstance();
/** * 構造數據庫的連接和訪問類 */ public Mysql() throws Exception { Class.forName(CONST.dbdriver); conn = DriverManager.getConnection(CONST.dburl); stmt = conn.createStatement(); } public Mysql(String sql) throws Exception { Class.forName(CONST.dbdriver); conn = DriverManager.getConnection(CONST.dburl); this.prepareStatement(sql); }
/** * 返回連接 * @return Connection 連接 */ public Connection getConnection() { return conn; } /** * PreparedStatement * @return sql 預設SQL語句 */ public void prepareStatement(String sql) throws SQLException { prepstmt = conn.prepareStatement(sql); } /** * 設置對應值 * @param index 參數索引 * @param value 對應值 */ 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); } //File file = new File("test/data.txt"); //int fileLength = file.length(); //InputStream fin = new java.io.FileInputStream(file); //mysql.setBinaryStream(5,fin,fileLength); 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; } /** * 返回狀態 * @return Statement 狀態 */ public Statement getStatement() { return stmt; } /** * 執行SQL語句返回字段集 * @param sql SQL語句 * @return ResultSet 字段集 */ public ResultSet executeQuery(String sql) throws SQLException { if (stmt != null) { return stmt.executeQuery(sql); } else return null; } public ResultSet executeQuery() throws SQLException { if (prepstmt != null) { return prepstmt.executeQuery(); } else return null; } /** * 執行SQL語句 * @param sql SQL語句 */ public void executeUpdate(String sql) throws SQLException { if (stmt != null) stmt.executeUpdate(sql); } public void executeUpdate() throws SQLException { if (prepstmt != null) prepstmt.executeUpdate(); } /** * 關閉連接 */ public void close() throws Exception { if (stmt != null) { stmt.close(); stmt = null; } if (prepstmt != null) { prepstmt.close(); prepstmt = null; } conn.close(); conn = null; } }
|
Mysql建立好後,以後涉及數據庫的操作,只要對象化Mysql就可以:
private String page_navlink_insert="insert into page_navlink values (?,?,?,?)";
public void insertnavlink() throws Exception
{
ResultSet rs=null;
try {
Mysql mysql = new Mysql(page_navlink_insert);
mysql.setInt(1,this.siteid);
mysql.setInt(2,this.pageid);
mysql.setString(3,this.navlinkname);
mysql.setString(4,this.pagefile);
mysql.executeUpdate();
mysql.close();
mysql = null;
} catch (Exception ex) {
throw new Exception("insertnavlink()"+ex.getMessage());
}
}
在Jsp中,就可以直接使用一句語句使用insertnavlink()了:
<jsp:useBean id="NAV" scope="session" class="mysite.Navlink" />
<jsp:setProperty name="NAV" property="*" />
........
NAV.insertnavlink();