使用java对操作数据库的封装例子
2011-04-24 09:35
441 查看
最初自己写的代码经常出现游标超出最大值的问题,后参考几篇博文后改进了下,虽然仍不够完善,但是和最初相比已经有了很大的改善。
代码如下:
private SQLException exception = null; //定义一个异常
private Connection con = pool.getConnection();// 从连接池中获得一个连接
public int delete(String sql) throws SQLException{
int resultNum =-1;
try {
//创建数据库操作集
sta = con.createStatement();
resultNum = sta.executeUpdate(sql);
} catch (SQLException e) {
con.rollback();
exception = e;
e.printStackTrace();
throw new SQLExceptio("数据库操作失败!");
}
return resultNum;
}
public int insert(String sql) throws SQLException {
int resultNum = -1;
try {
//创建数据库操作集
sta = con.createStatement();
//执行插入语句返回插入的行数,若插入失败返回-1
resultNum = sta.executeUpdate(sql);
} catch (SQLException e) {
con.rollback();
exception = e;
e.printStackTrace();
throw new SQLException("数据库操作失败!");
}
return resultNum;
}
public ResultSet query(String sql) throws SQLException {
//con = DbConnectionFactory.getInstance().getConnection();
ResultSet reuSet = null;
try {
//创建数据库操作集
sta = con.createStatement();
//数据查询结果集
reuSet = sta.executeQuery(sql);
} catch (SQLException e) {
con.rollback();
exception = e;
e.printStackTrace();
throw new SQLException("数据库操作失败!");
}
return reuSet;
}
public void close(){
try {
if(exception==null){
con.commit();
System.out.println("正常comit");
}
if(sta!=null){
//sta.CLOSE_CURRENT_RESULT;
sta.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
pool.relase(con);
}
其中比较关键的点是红色字体标出的部门,首先定义一个sql异常的变量,主要用来判断是该执行commit还rollback。其次就是在每个执行方法中抛出异常后进行rollback和存储exception的值。
这样就不会出现我们在开发中经常遇到的程序操作经常出现一些莫名其妙的问题,比如:数据库中没有记录,在前台却能搜索出来,刷新后就又没有了,再刷新又出来了。这些问题就是在执行完sql后没有及时提交导致的。
参考的文章
1.关于建立一个异常变量的
private SQLException exception = null; //定义一个异常
一个关于老外的statement关闭:/article/4429809.html
2.看到一哥们的关于数据库封装的求问:
主要关键点学习为抛出异常后的及时rollback:
http://www.iteye.com/problems/35375
代码如下:
private SQLException exception = null; //定义一个异常
private Connection con = pool.getConnection();// 从连接池中获得一个连接
public int delete(String sql) throws SQLException{
int resultNum =-1;
try {
//创建数据库操作集
sta = con.createStatement();
resultNum = sta.executeUpdate(sql);
} catch (SQLException e) {
con.rollback();
exception = e;
e.printStackTrace();
throw new SQLExceptio("数据库操作失败!");
}
return resultNum;
}
public int insert(String sql) throws SQLException {
int resultNum = -1;
try {
//创建数据库操作集
sta = con.createStatement();
//执行插入语句返回插入的行数,若插入失败返回-1
resultNum = sta.executeUpdate(sql);
} catch (SQLException e) {
con.rollback();
exception = e;
e.printStackTrace();
throw new SQLException("数据库操作失败!");
}
return resultNum;
}
public ResultSet query(String sql) throws SQLException {
//con = DbConnectionFactory.getInstance().getConnection();
ResultSet reuSet = null;
try {
//创建数据库操作集
sta = con.createStatement();
//数据查询结果集
reuSet = sta.executeQuery(sql);
} catch (SQLException e) {
con.rollback();
exception = e;
e.printStackTrace();
throw new SQLException("数据库操作失败!");
}
return reuSet;
}
public void close(){
try {
if(exception==null){
con.commit();
System.out.println("正常comit");
}
if(sta!=null){
//sta.CLOSE_CURRENT_RESULT;
sta.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
pool.relase(con);
}
其中比较关键的点是红色字体标出的部门,首先定义一个sql异常的变量,主要用来判断是该执行commit还rollback。其次就是在每个执行方法中抛出异常后进行rollback和存储exception的值。
这样就不会出现我们在开发中经常遇到的程序操作经常出现一些莫名其妙的问题,比如:数据库中没有记录,在前台却能搜索出来,刷新后就又没有了,再刷新又出来了。这些问题就是在执行完sql后没有及时提交导致的。
参考的文章
1.关于建立一个异常变量的
private SQLException exception = null; //定义一个异常
一个关于老外的statement关闭:/article/4429809.html
2.看到一哥们的关于数据库封装的求问:
主要关键点学习为抛出异常后的及时rollback:
http://www.iteye.com/problems/35375
相关文章推荐
- JAVA 使用哈希表操作数据库的例子 Using Hashtables to Store & Extract results from a Database.
- JAVA使用JDBC连接数据库做JSON封装和解析的例子
- Delphi 调用JAVA WebService 操作数据库登录的例子
- Java中使用JDBC连接数据库操作的步骤
- JAVA调用Tuxedo服务——使用JNI封装Tuxedo客户端的一个例子
- 转载【封装Java数据库操作的类】
- 使用JavaBean封装数据库操作
- Java的Hibernate框架数据库操作中锁的使用和查询类型
- 未封装的JDBC(MySQL)数据库操作例子
- 使用组件封装数据库操作(一)
- 封装JAVA数据库操作-学习
- JAVA本地程序使用FileSystemXmlApplicationContext读取application-datasorce.xml进行数据库操作
- Java封装JDBC数据库增、删、改、查操作成JAR文件,以供Web工程调用,适用于多种数据库
- java代码,使用sql语句操作mongo数据库
- 使用纯JAVA连接SQL SERVER 数据库的例子
- cocos2d-x sqlite的使用,数据库操作的封装
- 数据库---简单的使用Java操作数据库增删改查
- php使用adodb类库操作数据库-类的封装
- 为了方便维护,以后无论如何,数据库操作一定使用封装的强类型,或者自己封装的数据操作类。后记,使用分布式查询解决多个数据库之间的查询操作。
- java 数据库操作使用批处理