java mysql 操作类_java数据库操作类

本人用的数据库操作类,可能不是很完善,不过很实用

代码如下:

package xaut.dataPool;

import java.util.ArrayList;

import java.sql.CallableStatement;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.sql.DataSource;

import javax.naming.InitialContext;

import javax.naming.Context;

public class DatabaseBean {

private DatabaseConfigure databaseConfigure = null;

public Connection conn = null;

public Statement stmt = null;

private CallableStatement cstmt = null;

public DatabaseBean(DatabaseConfigure databaseConfigure) {

this.databaseConfigure = databaseConfigure;

}

/**

* 获取当前连接

*

* @return 返回当前连接connection

*/

public Connection getConnection(){

return this.conn;

}

/**

* 直接连接数据库,效率低

*

* @throws Exception 连接失败异常

*/

public void getDirectConnect()throws Exception{

if(this.conn==null){

try {

Class.forName(databaseConfigure.getJdbcDriver());

} catch (ClassNotFoundException e) {

System.out.println(" class not found: " + e.getMessage());

e.printStackTrace();

throw new SQLException("-Database driver notFind ");

}

try {

conn = DriverManager.getConnection(databaseConfigure

.getDatabaseURL(), databaseConfigure

.getDatabaseName(), databaseConfigure

.getDatebasePassword());

} catch (SQLException sqlex) {

System.err.println("DatabaseBean connection error"

+ sqlex.getMessage());

sqlex.printStackTrace();

throw new SQLException("-Database connection error ");

}

}

}

/**

* 通过数据库连接池连接,效率高

* 需要配置数据库连接池

* @throws Exception 连接失败异常

*/

public void getConnectFromdataPool()throws Exception{

if (this.conn == null) {

Context initCtx = new InitialContext();

DataSource ds = (DataSource) initCtx.lookup(this.databaseConfigure.getDatapool());

if (ds != null)

conn = ds.getConnection();

}

}

/**

* 此函数以后不建议使用,由于历史遗留问题保留

* @throws Exception

*/

public void connection() throws Exception {

if (this.conn == null) {

/*

// 先通过数据库连接池连接

if (this.databaseConfigure.getDatapool() != null) {

Context initCtx = new InitialContext();

DataSource ds = (DataSource) initCtx.lookup(this.databaseConfigure.getDatapool());

if (ds != null)

conn = ds.getConnection();

} else {

*/

//如果没有数据库连接池,则直接连接

try {

Class.forName(databaseConfigure.getJdbcDriver());

} catch (ClassNotFoundException e) {

System.out.println(" class not found: " + e.getMessage());

e.printStackTrace();

throw new SQLException("-Database driver notFind ");

}

try {

conn = DriverManager.getConnection(databaseConfigure

.getDatabaseURL(), databaseConfigure

.getDatabaseName(), databaseConfigure

.getDatebasePassword());

} catch (SQLException sqlex) {

System.err.println("DatabaseBean connection error"

+ sqlex.getMessage());

sqlex.printStackTrace();

throw new SQLException("-Database connection error ");

}

//}

}

}

public void disconnect() throws SQLException {

try {

if (stmt != null) {

stmt.close();

//注意调用close后,该变量不为null,如果再以stmt!=null为条件,将引发错误

stmt=null;

}

if (conn != null) {

conn.close();

//注意调用close后,与数据库的连接返还给了数据库连接池,但该变量不为null,

//如果再以判断conn!=null为条件,将引发错误

conn=null;

}

} catch (SQLException e) {

System.err.println("DatabaseBean disconnect error");

e.printStackTrace();

throw new SQLException("-Database disConnection error ");

}

}

public boolean isConnected() {

return (conn != null);

}

public ResultSet excutequery(String sql) throws SQLException {

ResultSet rs1 = null;

try {

if (!isConnected())

this.connection();

if (this.stmt == null)

stmt = conn.createStatement();

rs1 = stmt.executeQuery(sql);

return rs1;

} catch (Exception e) {

System.err.println("DatabaseBean query error" + e.getMessage());

e.printStackTrace();

throw new SQLException("-Query error ");

}

}

public boolean execute(String sql) throws SQLException {

try {

if (!isConnected())

this.connection();

if (this.stmt == null)

stmt = conn.createStatement();

return stmt.execute(sql);

} catch (Exception e) {

System.err.println("DatabaseBean execute error" + e.getMessage());

e.printStackTrace();

throw new SQLException("-Execute error ");

}

}

public void statementClose() {

try {

if (stmt != null)

stmt.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

public ResultSet callQueryProcedure(String sql) throws SQLException {

ResultSet rs = null;

try {

if (!isConnected())

this.connection();

if (this.cstmt == null)

cstmt = conn.prepareCall(sql);

cstmt.executeQuery();

} catch (Exception e) {

System.err.println("DatabaseBean callQueryProcedure error"

+ e.getMessage());

e.printStackTrace();

throw new SQLException("-CallQueryProcedure error ");

}

return rs;

}

public boolean callExecuteProcedure(String sql) throws SQLException {

try {

if (!isConnected())

this.connection();

if (this.cstmt == null)

cstmt = conn.prepareCall(sql);

return cstmt.execute();

} catch (Exception e) {

System.err.println("DatabaseBean callExecuteProcedure error"

+ e.getMessage());

e.printStackTrace();

throw new SQLException("-CallExecuteProcedure error ");

}

}

public void executeBatch(ArrayListsqlBatch) throws SQLException {

try {

if (!isConnected())

this.connection();

conn.setAutoCommit(false);

if (this.stmt == null)

stmt = conn.createStatement();

for (int i = 0; i < sqlBatch.size(); i++) {

stmt.addBatch((String) sqlBatch.get(i));

}

stmt.executeBatch();

conn.commit();

conn.setAutoCommit(true);

} catch (Exception e) {

System.err.println("DatabaseBean executeBatch error"

+ e.getMessage());

e.printStackTrace();

throw new SQLException("-ExecuteBatch error ");

}

}

public PreparedStatement createprepareStatement(String paramSQL)

throws SQLException {

try {

if (!isConnected())

this.connection();

return conn.prepareStatement(paramSQL);

} catch (Exception e) {

System.err.println("DatabaseBean PreparedStatement error");

e.printStackTrace();

throw new SQLException("-DatabaseBean PreparedStatement error ");

}

}

public void transactionStart() throws SQLException {

try {

conn.setAutoCommit(false);

} catch (SQLException e) {

System.err.println("DatabaseBean transactionStart");

e.printStackTrace();

throw new SQLException("-Transaction start error ");

}

}

public void transactionEnd() throws SQLException {

try {

conn.commit();

conn.setAutoCommit(true);

} catch (SQLException e) {

System.err.println("DatabaseBean transactionEnd error");

e.printStackTrace();

throw new SQLException("-Transaction end error:");

}

}

public void transactionRollback() throws SQLException {

try {

conn.rollback();

} catch (SQLException e) {

System.err.println("DatabaseBean transactionRollback error");

e.printStackTrace();

throw new SQLException("-Transaction rollback error ");

}

}

}

//配置文件静态类

package com.datapool;

public class DatabaseConfigure {

/**静态类*/

private static DatabaseConfigure instance = null;

private String databaseName="hdptdep";

private String datebasePassword="123456";

private String databaseURL="jdbc:oracle:thin:@192.168.88.49:1521:hdptdb";

private String jdbcDriver="oracle.jdbc.driver.OracleDriver";

/** 数据库连接池名称*/

private String datapool="java:comp/env/jdbc/hdptdep";

/**

* 构造函数

*/

private DatabaseConfigure() {

}

/**

* 单例函数

*

* @return 一个实例

*/

public static DatabaseConfigure getInstance() {

if (instance == null) {

instance = new DatabaseConfigure();

}

return instance;

}

public String getDatabaseName() {

return this.databaseName;

}

public void setDatabaseName(String databaseName) {

this.databaseName = databaseName;

}

public String getDatebasePassword() {

return this.datebasePassword;

}

public void setDatebasePassword(String datebasePassword) {

this.datebasePassword = datebasePassword;

}

public String getDatabaseURL() {

return this.databaseURL;

}

public void setDatabaseURL(String databaseURL) {

this.databaseURL = databaseURL;

}

public String getJdbcDriver() {

return this.jdbcDriver;

}

public void setJdbcDriver(String jdbcDriver) {

this.jdbcDriver = jdbcDriver;

}

public String getDatapool() {

return datapool;

}

public void setDatapool(String datapool) {

this.datapool = datapool;

}

}

阅读(9950) | 评论(0) | 转发(0) |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值