`
cuisuqiang
  • 浏览: 3960314 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3670135
社区版块
存档分类
最新评论

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

阅读更多

本来项目都是用到例如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

 

1
1
分享到:
评论
1 楼 cuisuqiang 2012-03-20  
忘了写打印结果了:
整形值:1		字符串:崔素强		整形值:11		
整形值:2		字符串:su		整形值:22		
整形值:3		字符串:qiang		整形值:33		
整形值:4		字符串:望着		整形值:44		

相关推荐

    java mysql高校返校新冠疫情排查系统+论文.zip

    开发者可能使用了Spring Boot框架,这是一个简化Java应用开发的框架,提供了自动配置、内嵌Web服务器、以及对Spring MVC和数据访问的支持。Spring MVC是Spring框架的一部分,用于构建Web应用,它提供了模型-视图-...

    基于ssm+mysql疫情冷链追溯系统源码数据库.zip

    本系统——基于SSM+MySQL的疫情冷链追溯系统,旨在提供一个高效、可靠的解决方案,实现对疫情相关冷链产品的全程追溯,确保公共卫生安全。下面将详细阐述该系统的组成部分及核心知识点。 1. SSM框架介绍 SSM是...

    图书借阅管理系统,采用SpringBoot+MyBatis+MySQL架构.zip

    总的来说,这个图书借阅管理系统结合了SpringBoot的快速开发能力、MyBatis的灵活数据库操作和MySQL的强大数据存储功能,形成了一套完整的解决方案。对于学习Java Web开发的学生来说,这是一个很好的实践项目,能够...

    基于ssm+mysql的个性化电子相册设计源码数据库.docx

    基于SSM框架(Spring、SpringMVC、MyBatis)和MySQL数据库的个性化电子相册系统,旨在提供一个高效、安全且易于使用的平台,让用户能够轻松管理自己的照片,并通过网络与他人共享美好的瞬间。 #### 二、关键技术...

    JAVA入门-接口-语法

    - **访问修饰符不同**:接口中的方法默认是公共的(`public`),不允许使用其他修饰符;而类中的方法可以根据需求使用`public`、`protected`、`private`等访问控制符。 #### 三、Java接口的语法 1. **声明接口**:...

    H2 数据库使用

    这创建了一个名为“guest”的用户,并赋予其对公共模式的全部权限。 **7. 数据备份与恢复** H2提供了方便的数据备份和恢复工具。使用SCRIPT命令可以导出数据库到文本文件,然后使用RUN命令导入: ```sql SCRIPT TO...

    基于ssm+mysql的医院院内物资管理系统源码数据库.doc

    Spring框架是Java平台的一个开源框架,提供了全面的解决方案来简化企业级应用的开发。它通过依赖注入(DI)和面向切面编程(AOP)等特性,大大简化了开发过程中的耦合度问题。 ##### 3.2 SpringMVC框架 SpringMVC...

    Java 面对对象工程练习 图书馆系统+程序.zip

    或者数据库连接,如使用JDBC与MySQL数据库交互,存储和检索大量数据。 总之,这个Java面向对象的图书馆系统练习将全面锻炼你的编程思维和技巧,从类的设计到对象的交互,从数据的存储到业务逻辑的实现,都将覆盖到...

    JSP电子政务网.rar

    接下来是Spring框架,它是一个全面的后端开发解决方案,包括依赖注入(DI)、面向切面编程(AOP)、数据访问/集成(DAO/ORM)、Web框架等模块。在这个电子政务网项目中,Spring主要负责管理对象的生命周期和依赖关系...

    JSP实验内容

    2. **内置对象的生命周期和使用方法:** - `request`对象:用于获取客户端请求的信息,如表单数据、HTTP头信息等。 - `response`对象:用于向客户端发送响应信息,包括状态码、文本内容等。 - `session`对象:...

    java图书馆管理系统

    总的来说,Java图书馆管理系统是一个综合运用Java编程语言、MySQL数据库、JDBC API、MVC设计模式和数据库设计的项目,旨在提供一个高效、可靠的图书管理解决方案。开发者需要具备扎实的Java基础、数据库知识和良好的...

    java连接数据库课程设计汇本报告书.doc

    二是基于B/S架构,学生需开发一个Java Web应用,使用Tomcat服务器,同样实现用户验证和数据库操作,但用户通过浏览器访问。 在实验过程中,学生需要熟悉JDBC的基本步骤:加载JDBC驱动、建立数据库连接、创建...

    简单java员工部分信息录入

    我们将利用MySQL数据库作为数据存储解决方案。 首先,让我们从Java编程语言的基础开始。Java是一种面向对象的、跨平台的编程语言,广泛应用于企业级应用开发,包括信息管理系统。为了实现员工信息录入,我们需要...

    JTangDataSource介绍

    综上所述,JTangDS作为一种高效的数据源解决方案,在企业级应用开发中具有广泛的应用前景。无论是对于开发者还是系统管理员来说,JTangDS都能够提供强大的支持,帮助他们构建更加健壮、高效的企业应用系统。

    hibernate框架学习笔记整理

    **Hibernate框架**是一种用于Java应用的**对象关系映射**(Object-Relational Mapping, ORM)解决方案,它允许开发者使用面向对象的方式操作数据库中的表(即执行CRUD操作),而无需直接编写SQL语句。 - **ORM**:...

    android百度一面面试题

    - **synchronized关键字**:用于方法或代码块,确保同一时刻只有一个线程访问共享资源。 - **ReentrantLock**:可重入锁,提供了比`synchronized`更灵活的锁定机制。 - **Volatile**:保证变量可见性,但不保证原子...

    WEB最新架构设计开发文档

    - Hibernate作为JPA的实现之一,提供了一个强大的ORM解决方案。Hibernate 3.6版本支持JPA 2.0规范,引入了更多的特性,如 Criteria 查询、Metamodel API等。 2. **集成过程中的挑战与解决** - 在尝试将Hibernate ...

    中科软JAVA面试题

    数据连接池预先创建并维护一组数据库连接,当应用程序请求连接时,从池中获取一个已有的连接,使用完毕后归还连接到池中,提高数据库访问效率。 #### 十八、分页实现方式 - 基于缓存的分页:先将所有数据加载到...

Global site tag (gtag.js) - Google Analytics