`
jessen163
  • 浏览: 465620 次
  • 性别: Icon_minigender_1
  • 来自: 潘多拉
社区版块
存档分类
最新评论

SQLHelper类(Java版)

    博客分类:
  • Util
阅读更多
SQLHelper类(Java版), 模仿微软提供的SQLHelper类的功能,真正实现了除SQLHelper类外,外界全部可以无须引用连接数据库的类,并且无须担心数据库的连接与关闭。


SQLHelper类支持数据库字段类型
1) 文本类型
2) 带符号整数类型
3) 双精度浮点数类型
4) 日期类型

注意:如果没有想要的类时,请手动添加到以下方法内
private static void prepareCommand(PreparedStatement pstmt, String[] parms)
	throws Exception {
		//代码段
}


package com.dal;

import javax.sql.DataSource;
import javax.naming.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.*;
import java.sql.*;

public abstract class SQLHelper {
	
	/**
	 * 连接数据库
	 * 
	 * @return
	 */
	private static Connection getConnect() {
		try {
			
			InitialContext context = new InitialContext();
			DataSource ds = (DataSource) context.lookup("java:/MSAccessDS");
			
			return ds.getConnection();
		} catch (Exception e) {
			return null;
		}
	}
	
	/**
	 * 用于执行语句(eg:insert语句,update语句,delete语句)
	 * 
	 * @param String
	 *            cmdtext,SQL语句
	 * @param OracleParameter[]
	 *            parms,参数集合
	 * @return int,SQL语句影响的行数
	 */
	public static int ExecuteNonQuery(String cmdtext, String[] parms)
	throws Exception {
		PreparedStatement pstmt = null;
		Connection conn = null;
		
		try {
			conn = getConnect();
			pstmt = conn.prepareStatement(cmdtext);
			prepareCommand(pstmt, parms);
			
			return pstmt.executeUpdate();
			
		} catch (Exception e) {
			throw new Exception("executeNonQuery方法出错:" + e.getMessage());
		} finally {
			try {
				if (pstmt != null)
					pstmt.close();
				if (conn != null)
					conn.close();
			} catch (Exception e) {
				throw new Exception("执行executeNonQuery方法出错:" + e.getMessage());
			}
		}
	}
	
	/**
	 * 用于获取结果集语句(eg:selete * from table)
	 * 
	 * @param cmdtext
	 * @param parms
	 * @return ResultSet
	 * @throws Exception
	 */
	public static ArrayList ExecuteReader(String cmdtext, String[] parms)
	throws Exception {
		PreparedStatement pstmt = null;
		Connection conn = null;
		
		try {
			conn = getConnect();
			
			pstmt = conn.prepareStatement(cmdtext);
			
			prepareCommand(pstmt, parms);
			ResultSet rs = pstmt.executeQuery();
			
			ArrayList al = new ArrayList();
			ResultSetMetaData rsmd = rs.getMetaData();
			int column = rsmd.getColumnCount();
			
			while (rs.next()) {
				Object[] ob = new Object[column];
				for (int i = 1; i <= column; i++) {
					ob[i - 1] = rs.getObject(i);
				}
				al.add(ob);
			}
			
			rs.close();
			return al;
			
		} catch (Exception e) {
			throw new Exception("executeSqlResultSet方法出错:" + e.getMessage());
		} finally {
			try {
				if (pstmt != null)
					pstmt.close();
				if (conn != null)
					conn.close();
			} catch (Exception e) {
				throw new Exception("executeSqlResultSet方法出错:" + e.getMessage());
			}
		}
	}
	
	/**
	 * 用于获取单字段值语句(用名字指定字段)
	 * 
	 * @param cmdtext
	 *            SQL语句
	 * @param name
	 *            列名
	 * @param parms
	 *            OracleParameter[]
	 * @return Object
	 * @throws Exception
	 */
	public static Object ExecuteScalar(String cmdtext, String name,
			String[] parms) throws Exception {
		PreparedStatement pstmt = null;
		Connection conn = null;
		ResultSet rs = null;
		
		try {
			conn = getConnect();
			
			pstmt = conn.prepareStatement(cmdtext);
			prepareCommand(pstmt, parms);
			
			rs = pstmt.executeQuery();
			if (rs.next()) {
				return rs.getObject(name);
			} else {
				return null;
			}
		} catch (Exception e) {
			throw new Exception("executeSqlObject方法出错:" + e.getMessage());
		} finally {
			try {
				if (rs != null)
					rs.close();
				if (pstmt != null)
					pstmt.close();
				if (conn != null)
					conn.close();
			} catch (Exception e) {
				throw new Exception("executeSqlObject方法出错:" + e.getMessage());
			}
		}
	}
	
	/**
	 * 用于获取单字段值语句(用序号指定字段)
	 * 
	 * @param cmdtext
	 *            SQL语句
	 * @param index
	 *            列名索引
	 * @param parms
	 *            OracleParameter[]
	 * @return Object
	 * @throws Exception
	 */
	public static Object ExecuteScalar(String cmdtext, int index, String[] parms)
	throws Exception {
		PreparedStatement pstmt = null;
		Connection conn = null;
		ResultSet rs = null;
		
		try {
			conn = getConnect();
			
			pstmt = conn.prepareStatement(cmdtext);
			prepareCommand(pstmt, parms);
			
			rs = pstmt.executeQuery();
			if (rs.next()) {
				return rs.getObject(index);
			} else {
				return null;
			}
		} catch (Exception e) {
			throw new Exception("executeSqlObject方法出错:" + e.getMessage());
		} finally {
			try {
				if (rs != null)
					rs.close();
				if (pstmt != null)
					pstmt.close();
				if (conn != null)
					conn.close();
			} catch (Exception e) {
				throw new Exception("executeSqlObject方法出错:" + e.getMessage());
			}
		}
	}
	
	/**
	 * @param pstmt
	 * @param cmdtext
	 * @param parms
	 *            Object[]
	 * @throws Exception
	 */
	private static void prepareCommand(PreparedStatement pstmt, String[] parms)
	throws Exception {
		try {
			if (parms != null) {
				for (int i = 0; i < parms.length; i++) {
					try {
						pstmt.setDate(i + 1, java.sql.Date.valueOf(parms[i]));
					} catch (Exception e) {
						try {
							pstmt
							.setDouble(i + 1, Double
									.parseDouble(parms[i]));
						} catch (Exception e1) {
							try {
								pstmt.setInt(i + 1, Integer.parseInt(parms[i]));
							} catch (Exception e2) {
								try {
									pstmt.setString(i + 1, parms[i]);
								} catch (Exception e3) {
									System.out
									.print("SQLHelper-PrepareCommand Err1:"
											+ e3);
								}
							}
						}
					}
				}
			}
		} catch (Exception e1) {
			System.out.print("SQLHelper-PrepareCommand Err2:" + e1);
		}
	}
}

分享到:
评论

相关推荐

    SqlHelper.java

    韩顺平老师细说servlet课程中需要用到的SqlHelper类。

    SQLHelper.java

    SQLHelper.java

    java连接oracle数据库———sqlHelper类

    本篇文章将深入探讨如何创建并使用`sqlHelper`类,以及它在Java与Oracle数据库集成中的关键作用。 首先,`sqlHelper`类通常包含以下几个核心功能: 1. **数据库连接**:使用JDBC(Java Database Connectivity)API...

    DbUtils.java SqlHelper.java

    在Java Web开发中,`DbUtils` 和 `SqlHelper` 是常见的数据库操作工具类,尤其在基于MVC(Model-View-Controller)架构的应用中,它们可以极大地简化数据访问层(DAO, Data Access Object)的代码,提高开发效率。...

    韩顺平改进版SqlHelper.java

    一个适用于高并发的工具类

    韩顺平sqlhelper工具类

    韩顺平SQLHelper工具类是一款在Java Web开发中被广泛应用的数据库操作辅助工具。该工具类封装了数据库连接的基本操作,如连接数据库、执行SQL语句、关闭资源等,大大简化了Java应用程序与数据库交互的过程。在Java ...

    韩顺平SQLHelper类

    在Java编程领域,SQLHelper类通常是一个用于简化数据库操作的工具类,它封装了JDBC(Java Database Connectivity)的基本步骤,使开发者能够更方便、高效地执行SQL语句。在这个特定的“韩顺平SQLHelper类”中,我们...

    韩顺平 SqlHelper类大全

    SqlHelper是Java编程中一个常用的工具类,主要目的是简化数据库操作,提高开发...通过这个"韩顺平 SqlHelper类大全",开发者能够快速上手三大主流数据库的Java连接,实现高效、简洁的数据库操作,为项目开发带来便利。

    SqlHelper工具类

    SqlHelper工具类是Java开发中常见的一种用于简化数据库操作的辅助类,它的设计目标是将数据库连接、SQL执行等繁琐的细节封装起来,使开发者能够更专注于业务逻辑的实现。在给定的信息中,我们看到有三个核心文件:...

    SqlHelper方便对数据库操作的类

    方便对数据库进行操作的工具类,使用时,只需要调用此类,使用类里面的方法,参数为sql语句,及sql的参数数值,无参数可设置为null,使用前请详阅代码

    韩顺平 sqlHelper 工具包

    该工具包主要由两个 java 类组成:DBUtil.java 和 SqlHelper.java。其中,DBUtil.java 是一个工具类,用于得到数据库连接和关闭连接;SqlHelper.java 是一个 SQL 帮助类,用于执行 SQL 语句。 2. 配置文件 工具包...

    SQLhelper文件

    SQLHelper是一个在编程中常用的工具类,特别是在Java开发中,用于简化数据库操作。它提供了对SQL语句的封装,使得开发者无需直接与JDBC API打交道,可以更方便、高效地执行常见的数据库操作,如增、删、改、查。在这...

    Java SQLHelper

    Java一个SQLHelper简单的帮助类

    SqlHelper帮助类

    #region 数据库连接 /// /// 一个有效的数据库连接字符串 /// /// &lt;returns&gt;&lt;/returns&gt; ... SqlConnection Connection = new SqlConnection(SqlHelper.GetConnSting()); return Connection; } #endregion

    Android版本的sqlhelper,用于sqlite连接

    `SqlHelper`类是Android开发者常用的一个工具,它帮助简化SQLite数据库的管理,包括连接、创建、更新、读取、删除(CRUD)操作以及事务处理。这个`Android版本的sqlhelper`就是基于SQLiteOpenHelper进行扩展,提供了...

    JAVA连接数据库封装(mysql)

    在Java中,我们通常使用`java.sql.DriverManager`类来建立与数据库的连接。 首先,我们需要在项目中引入MySQL的JDBC驱动,这通常通过Maven或Gradle的依赖管理完成。MySQL的JDBC驱动名为`mysql-connector-java`,...

    javaEE实验报告2---SQLHelper工具类的编写.docx

    本次实验主要针对Java EE(Java Platform, Enterprise Edition)中的数据库操作部分,通过编写一个名为`SQLHelper`的工具类来实现对数据库的基本操作,包括增、删、改、查等功能。实验旨在让学生深入理解JDBC(Java ...

Global site tag (gtag.js) - Google Analytics