使用dbcp连接池+sqlite

使用dbcp连接池+sqlite,第1张

概述尊重版权:本文绝大部分来自:http://blog.chinaunix.net/uid-11121450-id-3129713.html 1、准备并导入jar包 commons-pool.jar commons-dbcp.jar sqlite-jdbc-3.7.2.jar 其在maven中配置文件为:             <dependency>                 <groupI
尊重版权:本文绝大部分来自:http://blog.chinaunix.net/uID-11121450-ID-3129713.HTML

1、准备并导入jar包

commons-pool.jar
commons-dbcp.jar
sqlite-jdbc-3.7.2.jar

其在maven中配置文件为:

<dependency>
<groupID>org.xerial</groupID>
<artifactID>sqlite-jdbc</artifactID>
<version>3.7.2</version>

</dependency>

2、几个基本 *** 作

其基本思路如下:

(1)获得datasource

(2)根据datasource获得connection

(3)根据connection获得statement或者根据connection+SQL语句获得preparedStatement

(4)执行statement+sql或者preparedStatement得到返回结果resultSet

(5)根据ResultSet得到需要的返回值

(6)关闭ResultSet

(7)关闭statement或者preparedStatement

(8)关闭Connection

注意:所有关于设置数据库属性的 *** 作全部在connection上,比如设置自动回滚


package com.search.util;
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.sqlException; import java.sql.Statement;

import org.apache.commons.dbcp.BasicdataSource;

/** * 连接和使用数据库资源的工具类 */ public class DatabasesqliteUtil {
/** * 数据源 */ private BasicdataSource dataSource;
/** * 数据库连接 */ public Connection conn;
/** * 获取数据源 * @return 数据源 */ public BasicdataSource getDataSource() { return dataSource; }
/** * 设置数据源 * @param dataSource 数据源 */ public voID setDataSource(BasicdataSource dataSource) { this.dataSource = dataSource; }

/** * 获取数据库连接 * @return conn */ public Connection getConnection() { try { conn = dataSource.getConnection(); } catch (Exception e) { e.printstacktrace(); return null; } return conn; }
/** * 关闭数据库连接 * @param conn */ public static voID closeConnection(Connection conn) { if (null != conn) { try { conn.close(); conn = null; } catch (sqlException e) { e.printstacktrace(); } } }
/** * 获取执行sql的工具 * @param conn 数据库连接 * @return stmt */ public static int getFoundRows(Connection conn) { Statement stmt=null; ResultSet rs=null; try { stmt=getStatement(conn); rs=stmt.executequery("SELECT FOUND_ROWS()"); if(rs.next()){ return rs.getInt(1); } } catch (sqlException e) { e.printstacktrace(); }finally{ closeStatement(stmt); closeResultSet(rs); } return 0; }
/** * 获取执行sql的工具 * @param conn 数据库连接 * @return stmt */ public static Statement getStatement(Connection conn) { Statement stmt = null; try { stmt = conn.createStatement(); } catch (sqlException e) { e.printstacktrace(); }
return stmt; }
/** * 获取执行sql的工具 * @param conn 数据库连接 * @param sql SQL语句 * @return prepStmt */ public static PreparedStatement getPrepStatement(Connection conn,String sql) { PreparedStatement prepStmt = null; try { prepStmt = conn.prepareStatement(sql); } catch (sqlException e) { e.printstacktrace(); } return prepStmt; }
/** * 关闭数据库资源 * @param stmt */ public static voID closeStatement(Statement stmt) { if (null != stmt) { try { stmt.close(); stmt = null; } catch (sqlException e) { e.printstacktrace(); } } }
/** * 关闭数据库资源 * @param prepStmt */ public static voID closePrepStatement(PreparedStatement prepStmt) { if (null != prepStmt) { try { prepStmt.close(); prepStmt = null; } catch (sqlException e) { e.printstacktrace(); } } }
/** * 获取结果集 * @param stmt 执行sql的工具 * @param sql SQL语句 * @return 结果集 */ public static ResultSet getResultSet(Statement stmt,String sql) { ResultSet rs = null; try { rs = stmt.executequery(sql); } catch (sqlException e) { e.printstacktrace(); } return rs; }
/** * 关闭数据库资源 * @param rs */ public static voID closeResultSet(ResultSet rs) { if (null != rs) { try { rs.close(); rs = null; } catch (sqlException e) { e.printstacktrace(); } } } public static Boolean setautoCommit(Connection conn,boolean commitStatus){ if(conn==null){ return true; } try { conn.setautoCommit(commitStatus);
boolean commit = conn.getautoCommit(); return commit; } catch (sqlException e1) { e1.printstacktrace(); return true; } } public static boolean rollback(Connection conn,boolean oldCommitStatus){ if(conn==null){ return true; } try { conn.setautoCommit(oldCommitStatus); conn.rollback(); // 事物回滚
return true; } catch (sqlException e1) { e1.printstacktrace(); return false; } } public static boolean commit(Connection conn,boolean oldCommitStatus){ if(conn==null){ return true; } try { conn.setautoCommit(oldCommitStatus); conn.commit(); // 事物提交 return true; } catch (sqlException e1) { e1.printstacktrace(); return false; } } public static int getLastID(PreparedStatement ps){ ResultSet rs=null; try { rs = ps.getGeneratedKeys(); if (rs != null&&rs.next()) { return rs.getInt(1); } } catch (sqlException e) { // Todo auto-generated catch block e.printstacktrace();
}finally{ closeResultSet(rs); } return -1; } /** * 判断是否是管理员 * @param conn MysqL连接 * @param ip 请求ip * @param password 管理员密码 * @author yaofuyuan * @since 2011-08-02 12:58:00 * @return voID 0:不是,1:是,-1:数据库出错 */ public int isSuperadmin(Connection conn,String ip,String password){ if(conn==null){ return -1; } PreparedStatement ps =getPrepStatement( conn, "select count(*) as count from auth_admin_server where ip=? and password=?"); ResultSet rs = null; try { // 查询帐号,用户名和密码 ps.setString(1,ip); ps.setString(2,password); rs=ps.executequery(); if (rs.next()) { if(rs.getInt("count")==0){ //用户名密码错误 return 0; }else{ return 1; } } return -1; } catch(Exception e){ e.printstacktrace(); return -1; }finally{ closeResultSet(rs); closePrepStatement(ps); }
}

public int test(Connection conn){
PreparedStatement pst =getPrepStatement(conn,"select 123"); // 获取结果集 ResultSet rs = null; try { rs = pst.executequery(); if (rs.next()) { return rs.getInt(1); } } catch (sqlException e) { e.printstacktrace(); } finally { // 关闭数据库资源 closeResultSet(rs); closePrepStatement(pst); }
return -1; }

} 关于datasource如何配置请参看上一篇文章,谢谢 总结

以上是内存溢出为你收集整理的使用dbcp连接池+sqlite全部内容,希望文章能够帮你解决使用dbcp连接池+sqlite所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1174345.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存