当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

使用JDBC访问MySql的一个公共方法的解决方案

发表于: 2012-03-20   作者:cuisuqiang   来源:转载   浏览次数:
摘要: 本来项目都是用到例如Hibernate这些工具的,可是因为现在项目要求现在又丫的回到基于JDK的解决方案了。 这个方法很简单,但是对于数据的连接使用连接池,连接池也是直接初始化的。 package com; import java.sql.*; import java.util.*; import org.apache.commons.dbcp.BasicDataSource; /**

本来项目都是用到例如Hibernate这些工具的,可是因为现在项目要求现在又丫的回到基于JDK的解决方案了。

这个方法很简单,但是对于数据的连接使用连接池,连接池也是直接初始化的。

package com;
import java.sql.*;
import java.util.*;
import org.apache.commons.dbcp.BasicDataSource;
/**
 * @说明 数据库连接管理
 * @author cuisuqiang
 */
public class ConnectionManager {
	/**
	 * @说明 执行一条SQL
	 */
	@SuppressWarnings("unchecked")
	public static List<Object[]> excuteQuery(String sql) {
		Connection conn = null;
		PreparedStatement psta = null;
		ResultSet resultSet = null;
		List<Object[]> relist = new ArrayList<Object[]>(); // 总数据
		Object[] objects = null; // 每行数据
		try {
			conn = ConnectionManager.getConn(); // 得到链接
			if(null != conn){
				psta = conn.prepareStatement(sql);
				resultSet = psta.executeQuery(); // 执行查询,返回结果接集合
				int count = resultSet.getMetaData().getColumnCount(); // 一共有多少列数据
				// 循环行
				while (resultSet.next()) {
					objects = new Object[count];
					// 数据集索引从 1 开始,而数组存放时是从 0 开始
					for (int i = 1; i <= count; i++) {
						objects[i - 1] = resultSet.getObject(i);
					}
					relist.add(objects);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			relist = null;
		} finally {
			try {
				if(null != resultSet)
					resultSet.close();
				if(null != psta)
					psta.close();
				if(null != conn)
					conn.close();
			} catch (Exception e2) {
				
			}
		}
		return relist;
	}
	private static org.apache.commons.dbcp.BasicDataSource ds = null;
	static {
		ds = new BasicDataSource(); // 组建数据源对象
		int initialSize = 1; // 连接池启动时的初始值
		int maxActive = 10;  // 连接池的最大值
		int maxIdle = 1;     // 最大空闲值
		int minIdle = 1;     // 最小空闲值
		ds.setDriverClassName("com.mysql.jdbc.Driver");
		ds.setUrl("jdbc:mysql://192.168.154.128:3306/t2?useUnicode=true&characterEncoding=gbk");
		ds.setUsername("root");
		ds.setPassword("123456");
		ds.setInitialSize(initialSize);
		ds.setMaxActive(maxActive);
		ds.setMaxIdle(maxIdle);
		ds.setMinIdle(minIdle);
	}
	/**
	 * 从数据源中取得数据库连接
	 */
	public static Connection getConn() {
		try {
			return ds.getConnection();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
}

 

我使用的是BasicDataSource,你可能需要两个Jar包,commons-pool.jar,commons-dbcp.jar,连接mysql的话需要mysql-connector-java-3.1.13-bin.jar。

写一个mian方法直接测试:

package com;
import java.util.List;
public class T {
	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
		try {
			List<Object[]> list = ConnectionManager.excuteQuery("select * from t");
			for (int i = 0; i < list.size(); i++) {
				Object[] os = list.get(i);
				for(Object o : os){
					if (o instanceof String) {
						String s = (String) o;
						String newStr = new String(s.getBytes("ISO-8859-1"),"GBK");
						System.out.print("字符串:" + newStr + "\t\t");
					}else if(o instanceof Long){
						Long s = (Long) o;
						System.out.print("浮点值:" + s + "\t\t");
					}else if(o instanceof Integer){
						Integer s = (Integer) o;
						System.out.print("整形值:" + s + "\t\t");
					}else{
						System.out.print("未知型:" + o + "\t\t");
					}
				}
				System.out.println();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
}

我返回的是一个List集合,里面包含了一个Object数组。调用者在收到这个返回集合后可以根据实际情况进行解析,公共方法只是执行SQL,然后得到数据连接进行数据访问。

 

请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

或支持我的个人博客,地址:http://www.javacui.com

 

使用JDBC访问MySql的一个公共方法的解决方案

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
0.准备 (1)从 http://dev.mysql.com/downloads/connector/下载最新的MySQL数据库驱动程序: mysql-
我们知道最简单的连接模式是DriverManager+Connection+Statement+ResultSet。 利用JDBC连接MySQL的
JDBC连接MySQL 方法 实例及资料收集 准备工作   首先,安装MySQL,配置用户名和密码,创建数据库
使用JDBC连接SQL SERVER 2008,很多人都在问,我自己也测试几次,发现按照以前的方法连接会出现一点
第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大
  Java程序可以通过JDBC链接数据库,通过JDBC可以方便的访问数据库,不必为特定的数据库编写专门
using Microsoft.VisualStudio.TestTools.UnitTesting; 如果该DLL应用的是 C:\Program Files\Micros
其实这个问题困扰了我很久了,但一直没有好好去寻找解决方案,所以也一直拖着,如今稍微抽点时间研
首先要下载Connector/J地址:http://www.mysql.com/downloads/connector/j/ 这是MySQL官方提供的连
首先要下载Connector/J地址:http://www.mysql.com/downloads/connector/j/ 这是MySQL官方提供的连
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号