首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQLHelper种(Java版)

2012-10-24 
SQLHelper类(Java版)SQLHelper类(Java版), 模仿微软提供的SQLHelper类的功能,真正实现了除SQLHelper类外,

SQLHelper类(Java版)
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);}}}

热点排行