Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package net.vsame.url2sql.utils;
  
  import java.sql.ResultSet;
 import java.util.List;
 
 
2011-11-3 下午08:15:02

Author(s):
Gaollg
 
 public class JdbcUtils {
 	
 	private static Log LOG = LogFactory.getLog(JdbcUtils.class);
 	private static String className = "com.mysql.jdbc.Driver";
 	private static String url = null;
 	private static String username = null;
 	private static String password = null;
 	
 	static {
 		try {
 		} catch (Exception e) {
 			.error("JDBC驱动加载失败:" + e.getMessage(), e);
 		}
 	}
 	
 	private static void loadJDBC() throws Exception{
 		Properties retVal = JarUtils.loadProperties(JarUtils.getResourceAsStreamFromClassPath("jdbc.properties"));
 		if(retVal == null) {
 			return;
 		}
 		 = retVal.getProperty("className");
 		 = retVal.getProperty("url");
 		 = retVal.getProperty("username");
 		 = retVal.getProperty("password");
 		Class.forName();
 	}

取得连接

Parameters:
url
username
password
Returns:
 
 	public static Connection getConnection(String urlString usernameString password){
 		Connection conn = null;
 		try {
 			conn = DriverManager.getConnection(urlusernamepassword);
 		} catch (SQLException e) {
 			throw new RuntimeException(e.getMessage());
 		}
 		return conn;
 	}

从本地取得连接

Returns:
 
 	public static Connection getConnection(){
 	}

关闭连接,释放资源

Parameters:
rs
stmt
conn
 
 	public static void free(ResultSet rsStatement stmtConnection conn) {
 		try { // 捕捉异常
 			try {
 				if (rs!=null) { // 当ResultSet对象的实例rs不为空时
 					rs.close(); // 关闭ResultSet对象
 				}
 			} finally {
 				try {
 					if (stmt!=null) { // 当Statement对象的实例stmt不为空时
 						stmt.close(); // 关闭Statement对象
 					}
 				}catch (Exception e) {
 				} 
				finally {
					if (conn!=null) { // 当Connection对象的实例conn不为空时
						conn.close(); // 关闭Connection对象
					}
				}
			}
catch (Exception e) {
		}
	}
	public static void free(ResultSet rsStatement stmt) {
		free(rsstmtnull);
	}

给PreparedStatement赋值

Parameters:
pstmt
values
Throws:
java.sql.SQLException
	private static void setPstmtValues(PreparedStatement pstmtObject... values)
			throws SQLException {
		if(pstmt!=null&values!=null){
			for (int i = 0; i < values.lengthi++) {
				pstmt.setObject(i+1, values[i]);
			}
		}
	}
执行SQL语句(insert,update,delete)

Parameters:
callBack 回调函数中rs可获取[由于执行此 Statement 对象]而创建的所有自动生成的键
sql sql语句
values 对就占位符的值
Returns:
返回影响的行数
	public static int execute(JdbcUtils.CallBack callBackString sqlObject... values){
		.debug(sql + "|" + Arrays.toString(values));
		Connection conn = WebHelper.getContext().getConn();
		int retVal = 0;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try{
			if(callBack != null){
			}else{
				pstmt = conn.prepareStatement(sql);
			}
			setPstmtValues(pstmtvalues);
			retVal = pstmt.executeUpdate();
			if(callBack!=null){
				rs = pstmt.getGeneratedKeys();
				callBack.callback(rs);//回调
			}
		}catch (Exception e) {
			throw new RuntimeException(e);
		}finally{
			JdbcUtils.free(rspstmt);
		}
		return retVal;
	}

执行SQL语句(insert,update,delete)

Parameters:
sql sql语句
values 对就占位符的值
Returns:
返回影响的行数
	public static int execute(String sqlObject... values){
		return execute(nullsqlvalues);
	}

执行SQL语句(insert,update,delete)

Parameters:
sql sql语句
paramList
Returns:
返回影响的行数
	public static int[] executeBeatch(String sqlList<List<?>> paramList){
		.debug(sql + "|" + paramList);
		int[] retVal = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try{
			pstmt = WebHelper.getContext().getConn().prepareStatement(sql);
			for(List<?> list : paramList) {
				setPstmtValues(pstmtlist.toArray());
				pstmt.addBatch();
			}
			retVal = pstmt.executeBatch();
		}catch (Exception e) {
			throw new RuntimeException(e);
		}finally{
			JdbcUtils.free(rspstmt);
		}
		return retVal;
	}

回调一次 未经过任何处理的ResultSet

Parameters:
callBack
sql
values
	public static void query(JdbcUtils.CallBack callBackString sqlObject... values){
		.debug(sql + "|" + Arrays.toString(values));
		Connection conn = WebHelper.getContext().getConn();
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try{
			pstmt = conn.prepareStatement(sql);
			setPstmtValues(pstmtvalues);
			rs = pstmt.executeQuery();
			callBack.callback(rs);
		}catch (Exception e) {
			throw new RuntimeException(e);
		}finally{
			JdbcUtils.free(rspstmt);
		}
	}

JdbcUtils回调接口 2011-11-3 下午08:29:15

Author(s):
Gaollg
	public static interface CallBack{
回调方法

		public void callback(ResultSet rsthrows SQLException;
	}

强制初始化 表信息

Returns:
	public static List<StringgetAllTables(){
		Connection conn = WebHelper.getContext().getConn();
		String[] types = {"TABLE"};
		List<Stringtables = new ArrayList<String>();
		ResultSet rs = null;
		try {
			data = conn.getMetaData();
			rs = data.getTables(nullnullnulltypes);
			while (rs.next()) {
				String tableName = rs.getString("TABLE_NAME");
				tables.add(tableName);
			}
		}catch (Exception e) {
			throw new RuntimeException(e);
		}finally{
			JdbcUtils.free(rsnull);
		}
		return tables;
	}
	public static Long executeGeneratedKey(String sqlObject... values){
		final Long[] longs = new Long[1];
		JdbcUtils.execute(new JdbcUtils.CallBack() {
			public void callback(ResultSet rsthrows SQLException {
				//循环并注入
				if(rs.next()){
					try {
						longs[0] = rs.getLong(1);
catch (Exception e) {
						throw new RuntimeException(e);
					}
				}
			}
		}, sqlvalues);
		return longs[0];
	}

查询实体列表

Parameters:
sql
values
Returns:
	public static List<ModelqueryList(String sqlObject... values){
		final List<Modellist = new ArrayList<Model>();
		JdbcUtils.query(new JdbcUtils.CallBack() {
			public void callback(ResultSet rsthrows SQLException {
				//取得列名
数据库中的列
				List<StringdataColumns = new ArrayList<String>();
				for(int i=0;i<data.getColumnCount();i++){
					dataColumns.add(data.getColumnLabel(i+1));
				}
				//循环并注入
				while(rs.next()){
					Model m = new Model();
					try {
						for(String key : dataColumns){
							m.put(keyrs.getObject(key));
						}
catch (Exception e) {
						throw new RuntimeException(e);
					}
					list.add(m);
				}
			}
		}, sqlvalues);
		return list;
	}

查询实体

Parameters:
sql
values
Returns:
	public static Model queryOne(String sqlObject... values){
		List<Modellist = queryList(sqlvalues);
		if(list.size()==0){
			return null;
		}
		return list.get(0);
	}

查询个数

Parameters:
sql
values
Returns:
	public static long queryCount(String sqlObject... values) {
		final List<Longlist = new ArrayList<Long>();
		JdbcUtils.query(new JdbcUtils.CallBack() {
			public void callback(ResultSet rsthrows SQLException {
				if(rs.next()){
					list.add(rs.getLong(1));
				}
			}
		}, sqlvalues);
		return list.get(0);
	}
	public static PageView page(int currentpageint pagesizeString sqlObject... values){
		PageView v = new PageView(pagesizecurrentpage);
		long count = queryCount("select count(*) count from (" + sql + ") b"values);
		v.setTotal(count);
		if(v.calcFirstResult() < count){
			String temp = sql + " limit " + v.calcFirstResult() + "," + v.getPagesize();
			List<Modeldatas = queryList(tempvalues);
			v.setDatas(datas);
		}else{
		}
		return v;
	}
	public static void main(String[] argsthrows Exception {
		WebHelper.init(nullnull);
		Url2SqlContext c = WebHelper.getContext();
		PageView page = page(1, 2, "select id from `student` where 1=1");
	}
New to GrepCode? Check out our FAQ X