在使用jdbc操作数据库中,最常用的操作便是对数据库实现增,删,改,查四种基本的操作,在一般的java操作模式下,常用的是使用一个数据对象(就是和数据库中表列对应的数据结构,只用set和get方法),但是,在写的过程中,使用PreparedStatement时,就会出现,对象的参数之间的对应耦合太强还要写太多的set参数方法,很繁琐。,所以我就为此写了一个封装类,其实很简单,就是使用一个对象数组保存不确定的?参数。具体的看代码:
/** * /** * Title: * Description:对数据库实际操作的封装类 * Copyright: Copyright (c) 2004 * Company: * @author 陈少坤 qq:29189725 * @version 1.0 DBOperator */ import java.sql.*;public class DBOperator { private DBConnectionManager db = null; private java.sql.PreparedStatement ps = null; private java.sql.ResultSet rs=null; private Connection con = null; public DBOperator() { initialize(); } private void initialize() { db = DBConnectionManager.getInstance(); con = db.getConnection("idb"); } /** *所有对数据库操作中需要返回RestsultSet的字符串 for example select * @param sql sql字符串 * @param params * @return */ public ResultSet select(String sql, Object[] params) { rs = null; try { ps = con.prepareStatement(sql); int index = 1; if (params != null) { int n = params.length; if (n < 2 || n % 2 != 0 || (n/2)!=this.getStrNum(sql,"?")) { throw new IllegalArgumentException( "参数为奇数或者是小于2,或者是参数的个数不一致"); } for (int i = 0; i < params.length; i = 2) { params[i 1]=this.pareObjToStr(params[i 1]);//把第二个参数对象转换为字符串类型 if ( ( (String) params[i]).toLowerCase().equals("string")) { ps.setString(index , (String) params[i 1]); } if ( ( (String) params[i]).toLowerCase().equals("long")) { ps.setLong(index , Long.parseLong( (String) params[i 1])); } if ( ( (String) params[i]).toLowerCase().equals("int")) { ps.setInt(index , Integer.parseInt( (String) params[i 1])); } if ( ( (String) params[i]).toLowerCase().equals("date")) { ps.setString(index , (String) params[i 1]); } if ( ( (String) params[i]).toLowerCase().equals("float")) { ps.setFloat(index , Float.parseFloat((String) params[i 1])); } if ( ( (String) params[i]).toLowerCase().equals("double")) { ps.setDouble(index , Double.parseDouble((String) params[i 1])); } if ( ( (String) params[i]).toLowerCase().equals("image")) { ps.setBytes(index , (byte[]) params[i 1]); } } } rs = ps.executeQuery(); } catch (NumberFormatException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return rs; } /** *所有对数据库的更新操作 contains(insert update delete) * @param sql 带参数的sql语句 * @param params 参数数组 * @return */ public int update(String sql, Object[] params)
Java教程分页: 共3页: 上一页 1 [2] [3] 下一页