`

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架包

    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

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

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

    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平台标准,它提供了一组组件和服务...

    java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.

    java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.

    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 - **...

    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)和删除...

    Java开发语言的开发平台与J2EE编程技术问题研究.pdf

    J2EE(Java 2 Platform, Enterprise Edition)是基于Java语言的一种企业级应用开发平台,它侧重于企业级应用的开发。J2EE技术的出现,弥补了Java在企业级应用中的不足,其核心是Enterprise JavaBeans(EJB),提供了...

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

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

    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) 技术。这本书的第三版,由...

Global site tag (gtag.js) - Google Analytics