`

J2EE工具类:DataBaseUtil.java

阅读更多
package com.worthtech.app.sql;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

public class DataBaseUtil {
	private String driver;

	private String url;

	private String user;

	private String password;

	private Connection conn;

	public DataBaseUtil(String fileName) {
		loadProperties(fileName);
		setConnection();
	}

	// handle the properties file to get the informations for connection
	private void loadProperties(String fileName) {
		Properties props = new Properties();
		try {
			props.load(new FileInputStream(fileName));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		this.driver = props.getProperty("driver");
		this.url = props.getProperty("url");
		this.user = props.getProperty("user");
		this.password = props.getProperty("password");
	}

	private void setConnection() {
		try {
			Class.forName(driver);
			this.conn = DriverManager.getConnection(url, user, password);
		} catch (ClassNotFoundException classnotfoundexception) {
			System.err.println("db: " + classnotfoundexception.getMessage());
		} catch (SQLException sqlexception) {
			System.err.println("db.getconn(): " + sqlexception.getMessage());
		}
	}

	public Connection getConnection() {
		try {
			if (conn != null && !conn.isClosed()) {
				return this.conn;
			} else {
				setConnection();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return this.conn;
	}

	public void closeConnection() {
		try {
			if (st != null) {
				st.close();
			}
			if (conn != null && !conn.isClosed()) {
				conn.close();
				conn = null;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 增加,修改,删除数据
	 * 
	 * @param sql
	 * @param sqlValue
	 * @return
	 * @throws Exception
	 *             用法: sql="UPDATE user SET password = ? WHERE phone= ?"; String
	 *             sql="INSERT INTO payee(name,card,openBank,addDate,addPhone)
	 *             VALUES(?,?,?,?,?)"; delete ... db.executeUpdate(sql, new
	 *             String[]{name,card,openBank,addDate,addPhone});
	 */
	public int doExecute(String sql, String sqlValue[]) {
		int count = 0;
		try {
			PreparedStatement ps = conn.prepareStatement(sql);
			if (sqlValue != null) {
				for (int i = 0; i < sqlValue.length; i++)
					ps.setString(i + 1, sqlValue[i]);
			}
			count = ps.executeUpdate();
		} catch (Exception e) {
		}
		return count;
	}

	/**
	 * 提供更通用点的方法
	 * 
	 * @param sql
	 * @return
	 */
	public int doExecute(String sql) {
		return doExecute(sql, null);
	}

	/**
	 * 获得查询数据,返回一个ArrayList 得到的Arraylist 可以用 Map解析 用法: Arraylist list =
	 * db.getList("select * from user where ***") for(int i=1;i<list.size;i++)
	 * Map map = (Map)list.get(i); map.get("id"); 就是得到了里面的id了
	 * 
	 */
	public ArrayList getList(String sql) {
		Statement st = null;
		ArrayList list = new ArrayList();
		try {
			// PreparedStatement ps = conn.prepareStatement(sql);
			// ResultSet rs=ps.executeQuery();
			st = conn.createStatement();
			ResultSet rs = st.executeQuery(sql);
			ResultSetMetaData meta = rs.getMetaData();
			int count = meta.getColumnCount();
			String cols[] = new String[count];
			for (int i = 0; i < cols.length; i++) {
				if (meta.getColumnName(i + 1) != null)
					cols[i] = meta.getColumnName(i + 1);
				else
					cols[i] = meta.getColumnLabel(i + 1);
			}
			HashMap map = null;
			String fieldValue = null;
			for (; rs.next(); list.add(map)) {
				map = new HashMap();
				for (int i = 0; i < cols.length; i++) {
					int iType = meta.getColumnType(i + 1);
					if (iType == 2 || iType == 3) {
						if (meta.getScale(i + 1) == 0)
							fieldValue = String.valueOf(rs.getLong(i + 1));
						else
							fieldValue = rs.getString(i + 1);
					} else if (iType == 8)
						fieldValue = String.valueOf(rs.getDouble(i + 1));
					else if (iType == 6 || iType == 7)
						fieldValue = String.valueOf(rs.getFloat(i + 1));
					else
						fieldValue = rs.getString(i + 1);
					if (fieldValue == null)
						fieldValue = "";
					else
						fieldValue = fieldValue.trim();
					map.put(cols[i], fieldValue);// .toLowerCase()
				}
			}
		} catch (Exception e) {
		}
		return list;
	}

	/**
	 * 获得记录数
	 * 
	 * @param sql
	 * @return 用法: String sql="select count(*) from bill where ... ;
	 *         count=db.executeQuery(sql);
	 */
	public int getCount(String sql) {
		// String sql="select count(*) from table where ...";
		ResultSet rs = null;
		PreparedStatement ps;
		int count = 0;
		try {
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			rs.next();
			count = rs.getInt(1);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return count;
	}

	/**
	 * 以下4个方法都可以用doExecute(),getList()替代
	 * 
	 * @param args
	 */
	private Statement st = null;

	public void doInsert(String sql) {
		try {
			st = conn.createStatement();
			int i = st.executeUpdate(sql);
		} catch (SQLException sqlexception) {
			System.err.println("db.executeInset:" + sqlexception.getMessage());
		}
	}

	public void doDelete(String sql) {
		try {
			st = conn.createStatement();
			int i = st.executeUpdate(sql);
		} catch (SQLException sqlexception) {
			System.err.println("db.executeDelete:" + sqlexception.getMessage());
		}
	}

	public void doUpdate(String sql) {
		try {
			st = conn.createStatement();
			int i = st.executeUpdate(sql);
		} catch (SQLException sqlexception) {
			System.err.println("db.executeUpdate:" + sqlexception.getMessage());
		}
	}

	public ResultSet doSelect(String sql) {
		ResultSet rs = null;
		try {
			st = conn.createStatement(
					java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
					java.sql.ResultSet.CONCUR_READ_ONLY);
			rs = st.executeQuery(sql);
		} catch (SQLException sqlexception) {
			System.err.println("db.executeQuery: " + sqlexception.getMessage());
		}
		return rs;
	}

	/**
	 * 以下3个为保留方法
	 */
	public void beginTransaction() {
		try {
			conn.setAutoCommit(false);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void commitTransaction() {
		try {
			conn.commit();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void rollbackTransaction() {
		try {
			conn.rollback();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 测试
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		DataBaseUtil util = new DataBaseUtil("config.properties");
		String sql = "";
		sql = "INSERT INTO user(userId,password,userName,zone,phone) VALUES(?,?,?,?,?)";
		try {
			util.doExecute(sql, new String[] { "name", "pass", "上海", "021",
					"61089712" });
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		sql = "select * from user ";
		ArrayList list = util.getList(sql);
		System.out.println("size=" + list.size());
		for (int i = 0; i < list.size(); i++) {
			Map map = (Map) list.get(i);
			System.out.println("===" + map.get("userId"));
			System.out.println("===" + map.get("password"));
			System.out.println("===" + map.get("userName"));
			System.out.println("===" + map.get("zone"));
			System.out.println("===" + map.get("phone"));
		}
		//		Connection conn = util.getConnection();
		util.closeConnection();
	}
}

分享到:
评论

相关推荐

    J2EE JAR包(J2EE1.3 J2EE1.4 J2EE5.0 )

    Java 企业版(Java 2 Platform, Enterprise Edition,简称 J2EE)是 Sun Microsystems 推出的用于构建分布式、多层企业级应用的框架。它为开发者提供了多种服务和组件模型,包括Java Servlets、JavaServer Pages ...

    j2ee.jar架包

    j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar...

    j2ee 1.4所有jar包

    activation.jar javax.servlet.jar javax.servlet.jsp.jar jboss-j2ee.jar jboss-jaxrpc.jar jboss-jsr77.jar jboss-saaj.jar mail.jar namespace.jar xml-apis.jar

    21天学通J2EE和一些J2EE书及代码].java.-.Teach.Yourself.J2EE.in.21.Days.-.Sams.(eBook-pdf)

    《21天学通J2EE》一书旨在为读者提供一个系统且高效的学习路径,以掌握Java 2 Enterprise Edition(J2EE)的核心概念和技术。J2EE是Sun Microsystems在2000年推出的一套企业级Java平台标准,它提供了一组组件和服务...

    HTML笔记. J2EE笔记. Javascript笔记. JAVA笔记.oracle 笔记.Linux笔记.tomcat笔记.面试问题.数据结构.听韩顺平的笔记.正则表达式.

    HTML笔记. J2EE笔记. Javascript笔记. JAVA笔记.oracle 笔记.Linux笔记.tomcat笔记.面试问题.数据结构.听韩顺平的笔记.正则表达式.等,我是我在上大学时学习做的笔记,拿出来和大家共享。。

    Turbo ePrinting(J2EE版)开发指南.rar

    《Turbo ePrinting(J2EE版)开发指南》是一份专为Java企业级开发者准备的详细教程,旨在帮助他们理解和掌握如何在J2EE平台上开发和实现Turbo ePrinting系统。该指南涵盖了从基础概念到高级实践的全方位内容,旨在提升...

    J2EE考试题目及答案.pdf

    J2EE 是 Java 企业版平台的缩写,指的是 Java 语言中用于开发企业级应用程序的技术平台。J2EE 平台主要包括四层模型:客户端层、Web 层、业务逻辑层和企业信息系统层。 J2EE 平台的四层模型: * 客户端层:运行在...

    第一章 J2EE概述.ppt

    J2EE(Java Enterprise Edition),是Java EE编程技术课程的一部分,为企业级应用程序提供了一种标准化的开发框架。J2EE的出现是为了解决传统应用程序模型的种种缺陷,提供了一种可扩展、可维护、可伸缩的开发架构。...

    Java.J2EE.Job.Interview.Companion.2nd.Edition.Apr.2007

    《Java.J2EE.Job.Interview.Companion.2nd.Edition.Apr.2007》这本书是针对Java和J2EE开发者求职面试的一本指南,它提供了丰富的面试问题和解答,帮助求职者准备J2EE相关的职位面试。这本书的第二版在2007年4月发布...

    Java.J2EE.Job.Interview.Companion.2nd.Edition.Apr.2007.pdf

    ### Java/J2EE Job Interview Companion知识点总结 #### 一、书籍基本信息 - **书名**:《Java/J2EE Job Interview Companion》第二版 - **出版时间**:2007年4月 - **作者**:K. Arulkumaran 和 A. Sivayini - **...

    javax.management.j2ee:javax.management.j2ee api的存储库

    :warning: 该项目现在是EE4J计划的一部分。 该仓库已被归档,因为所有活动现在都在。 有关整体EE4J过渡状态,请参见。 javax.management.j2ee javax.management.j2ee api的存储库

    j2ee源码 Commonjava.java

    j2ee源码j2ee源码j2ee源码j2ee源码j2ee源码j2ee源码j2ee源Commonjava.javaCommonjava.javaCommonjava.javaCommonjava.javaCommonjava.java

    J2EE_architecture.rar_site:www.pudn.com_架构师

    J2EE提供JTA(Java Transaction API)来处理事务,JMS(Java Message Service)用于异步通信,JNDI(Java Naming and Directory Interface)提供命名和目录服务。 5. **中间件(Middleware)**:J2EE应用服务器(如...

    java-一个j2ee的开发案例程序.zip.zip

    你可以从中学习到如何将Java类、接口和框架整合起来实现一个完整的J2EE应用。 其次,"一个j2ee的开发案例程序.zip"是案例程序的源代码或二进制文件。这个压缩文件可能包含以下几个部分: 1. **源代码**:可能包括...

    archive_一个j2ee的开发案例程序.zip.zip

    标题中的"archive_一个j2EE的开发案例程序.zip.zip"表明这是一个压缩文件,其中包含了一个J2EE(Java 2 Platform, Enterprise Edition)的开发案例。J2EE是Java平台的一个版本,专为构建企业级分布式应用系统设计。...

    J2EE系列讲座之Hibernate.lesson1.rar

    5. **实体类和映射文件**:讲解如何创建Java实体类,以及对应的.hbm.xml映射文件,理解属性与数据库字段的对应。 6. **CRUD操作**:展示如何使用Hibernate进行创建(Create)、读取(Read)、更新(Update)和删除...

    j2ee.chm.zip_chm help id java_j2ee chm_j2ee help c++_j2ee.c_zip

    《J2EE技术详解——基于j2ee.chm.zip_chm help id java_j2ee chm_j2ee help c++_j2ee.c_zip的综合指南》 在信息技术领域,Java 2 Platform, Enterprise Edition(J2EE)是用于构建企业级应用的重要平台。它提供了...

    Java.J2EE.EJB-Enterprise.JavaBeans, 3rd Edition-Titan.Books

    《Java.J2EE.EJB-Enterprise.JavaBeans, 3rd Edition-Titan.Books》是一部针对企业级Java开发的重要参考资料,特别关注Java Enterprise Edition (J2EE) 中的Enterprise JavaBeans (EJB) 技术。这本书的第三版,由...

    Eclipse中通过Tomcat运行J2EE项目java.lang.OutOfMemoryError PermGen space的解决方案

    在 Eclipse 中通过 Tomcat 运行 J2EE 项目时,可能会出现 java.lang.OutOfMemoryError: PermGen space 异常,这是由于 JVM 默认分配的运行空间过小,导致 J2EE 项目加载的类过多,造成内存溢出。 PermGen space 是...

    The J2EE Tutorial-中文版.pdf

    - **定义与背景**:Java2 Enterprise Edition(J2EE)是Java平台的一个版本,专为开发企业级应用而设计。J2EE继承和发展了Java SE,并且特别强调了支持分布式计算环境中的服务端应用程序开发。 - **发展历程**: -...

Global site tag (gtag.js) - Google Analytics