`

传说中的SqlHelper

    博客分类:
  • JDBC
阅读更多

dbinfo.properties:

#oracle
url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
username=scott
driver=oracle.jdbc.driver.OracleDriver
password=Oracle11g
 

 

SqlHelper.java:

/**
 * 功能:实现SqlHelper工具类
 * 日期:2012年3月29日
 */
package com.cz.util;

import java.io.*;
import java.sql.*;
import java.util.*;

public class SqlHelper {
	//定义需要的变量
	private static Connection ct=null;
	private static PreparedStatement ps=null;
	private static ResultSet rs=null;
	private static CallableStatement cs=null;
	
	public static CallableStatement getCs() {
		return cs;
	}

	private static String url="";
	private static String username="";
	private static String driver="";
	private static String password="";
	//读取配置文件
	private static Properties pp=null;
	private static InputStream fis=null;
	
	//加载驱动,只需要一次
	static{
		try {
			//从dbinfo.properties文件中读取配置信息
			pp=new Properties();
			//fis=new FileInputStream("dbinfo.properties");
			//当我们使用java web的时候,读取文件要使用类加载器
			fis=SqlHelper.class.getClassLoader().getResourceAsStream("dbinfo.properties");
			pp.load(fis);
			url=pp.getProperty("url");
			username=pp.getProperty("username");
			driver=pp.getProperty("driver");
			password=pp.getProperty("password");
			
			Class.forName(driver);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				fis.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			fis=null;
		}
	}
	//得到连接
	public static Connection getConnection(){
		try {
			ct=DriverManager.getConnection(url, username, password);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return ct;
	}
	
	//分页问题
	public static ResultSet executeQuery(){
		return null;
	}
	
	//调用存储过程(无返回值)
	public static void callPro1(String sql,String [] parameters){
		try {
			ct=getConnection();
			cs=ct.prepareCall(sql);
			//给?赋值
			if(parameters!=null){
				 for(int i=0;i<parameters.length;i++){
					 cs.setObject(i+1, parameters[i]);
				 }
			}
			//执行
			cs.execute();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			//抛出运行时异常
			throw new RuntimeException(e.getMessage());
		}finally{
			close(rs,cs,ct);
		}
	}
	
	//调用存储过程(有返回值)
	public static CallableStatement callPro2(String sql,String [] inparameters,Integer [] outparameters){
		try {
			ct=getConnection();
			cs=ct.prepareCall(sql);
			//给?赋值
			if(inparameters!=null){
				 for(int i=0;i<inparameters.length;i++){
					 cs.setObject(i+1, inparameters[i]);
				 }
			}
			if(outparameters!=null){
				 for(int i=0;i<outparameters.length;i++){
					 cs.registerOutParameter(inparameters.length+1+i, outparameters[i]);
				 }
			}
			
			//执行
			cs.execute();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			//抛出运行时异常
			throw new RuntimeException(e.getMessage());
		}finally{
			//close(rs,cs,ct);
		}
		return cs;
	}
	
	//统一的select语句
	public static ResultSet executeQuery(String sql,String [] parameters){
		try {
			ct=getConnection();
			ps=ct.prepareStatement(sql);
			//给?赋值
			if(parameters!=null){
				 for(int i=0;i<parameters.length;i++){
					 ps.setString(i+1, parameters[i]);
				 }
			}
			//执行
			rs=ps.executeQuery();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			//抛出运行时异常
			throw new RuntimeException(e.getMessage());
		}finally{
			//close(rs,ps,ct);
		}
		return rs;
	}
	
	//对查询语句升级
	//这样可以满足:哪里使用资源哪里关闭资源
	public static ArrayList executeQuery3(String sql,String[] parms)
	{
		PreparedStatement pstmt=null;
		Connection conn=null;
		ResultSet rs=null;
		try{
			conn=getConnection();
			pstmt=conn.prepareStatement(sql);
			//对问号赋值
			if(parms!=null){
				 for(int i=0;i<parms.length;i++){
					 pstmt.setString(i+1, parms[i]);
				 }
			}
			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);

			}
			
			return al;
		}catch(Exception e){
			e.printStackTrace();
			throw new RuntimeException("executeSqlResultSet方法出错:"+e.getMessage());
		}finally{
			close(rs, pstmt, conn);
		}
	}


	
	public static Connection getCt() {
		return ct;
	}

	public static PreparedStatement getPs() {
		return ps;
	}

	public static ResultSet getRs() {
		return rs;
	}

	//如果有多个update/delete/insert,需要考虑事务
	public static void executeUpdate2(String []sql,String [][]parameters){
		try {
			ct=getConnection();
			//因为这时用户传入的可能是多个sql语句
			ct.setAutoCommit(false);
			for(int i=0;i<sql.length;i++){
				if(parameters[i]!=null){
					ps=ct.prepareStatement(sql[i]);
					for(int j=0;j<parameters[i].length ;j++){
						ps.setString(j+1,parameters[i][j]);
					}
					ps.executeUpdate();
				}
			}
			//int i=9/0;
			ct.commit();
			
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			//回滚
			try {
				ct.rollback();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			//抛出运行时异常
			throw new RuntimeException(e.getMessage());
		}finally{
			close(rs,ps,ct);
		}
	}
	
	
	//先写一个update/delete/insert
	public static void executeUpdate(String sql,String [] parameters){
		
		try {
			ct=getConnection();
			ps=ct.prepareStatement(sql);
			//给?赋值
			if(parameters!=null){
				 for(int i=0;i<parameters.length;i++){
					 ps.setString(i+1, parameters[i]);
				 }
			}
			//执行
			ps.executeUpdate();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			//抛出运行时异常
			throw new RuntimeException(e.getMessage());
		}finally{
			close(rs,ps,ct);
		}
		
	}
	
	//关闭资源函数
	public static void close(ResultSet rs,Statement ps,Connection ct){
		try {

			if (rs != null) {
				rs.close();
			}
			rs = null;
			if (ps != null) {
				ps.close();
			}
			ps = null;
			if (ct != null) {
				ct.close();
			}
			ct = null;
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	

}
 

 

 

 

 

分享到:
评论

相关推荐

    SQLHelper中文翻译版本

    SQLHelper中文翻译版本 SQLHelper中文翻译版本 SQLHelper中文翻译版本

    sqlhelper(中文)

    SQLHelper 是一个在.NET框架中常用的数据库操作辅助类库,主要功能是简化SQL语句的编写和执行,提高开发效率。这个"SQLHelper(中文)"版本可能是针对中文环境或者中文开发者设计的,提供了更易懂的接口和文档,相较于...

    SqlHelper详细中文注释

    根据提供的文件信息,我们可以深入解析`SqlHelper`类的相关知识点,包括其主要功能、使用方法以及内部实现细节等。 ### SqlHelper概述 `SqlHelper`类是一个用于简化SQL Server数据库操作的工具类,它提供了执行SQL...

    sqlHelper 中文注释版

    sqlHelper 中文注释版,sqlHelper 中文注释版,sqlHelper 中文注释版

    GridView中使用SqlHelper分页

    本话题主要关注如何在GridView中结合SqlHelper实现分页功能,这对于处理大量数据时提高用户体验至关重要。 SqlHelper是.NET Framework中的一个实用工具类,它简化了SQL Server数据库的访问。使用SqlHelper,我们...

    微软SqlHelper(原版+中文注释版)

    SqlHelper是.NET框架中一个非常实用的数据库操作辅助类库,它由微软开发,用于简化对SQL Server数据库的访问。这个“微软SqlHelper(原版+中文注释版)”提供了原始版本的源代码以及带有详细中文注释的版本,使得...

    SqlHelper(带详细中文注释)

    微软提供的的SQLHelper类,封装了最常用的数据操作,为了方便初学的朋友,上传一个带详细中文注释的SqlHelper。

    SqlHelper.cs 微软的SQLHelper类(含完整中文注释)

    SqlHelper.cs 微软的SQLHelper类 微软的SQLHelper类(含完整中文注释) 非常好的SQLHelper

    Sqlhelper

    SqlHelper 是一个在.NET开发中常用的类库,主要用于简化数据库操作。这个类库提供了一组静态方法,使得开发者能够方便地执行SQL语句,而无需每次都要创建和管理数据库连接,从而极大地提高了代码的可读性和可维护性...

    sqlhelper

    ### SQLHelper类详解 #### 一、概述 `SQLHelper`类主要负责处理与...通过以上介绍,我们可以看到`SQLHelper`类在.NET应用程序中处理数据库操作时的重要性。合理使用这些方法能够简化代码并提高程序的健壮性和安全性。

    SqlHelper源码及说明

    // SQLHelper.cs // // This file contains the implementations of the SqlHelper and SqlHelperParameterCache // classes. 这个文件实现了SqlHelper类和SqlHelperParameterCache类 //其中SqlHelper类执行各种方式...

    C# SqlHelper类 (微软官方)

    在.NET框架中,微软提供了一个名为SqlHelper的类,它是一个辅助类,用于简化与SQL Server数据库的交互。这个类通常被用在C#应用程序中,以执行SQL命令和存储过程。SqlHelper类的设计目标是提高代码的可重用性和安全...

    SQLHelper数据库操作组件

    组件中包含数据库操作方法,SqlHelper有很多版本,主要以微软一开始发布的SqlHelper类,后面包含进了Enterprise Library开源包中了。还有一个主要版本是dbhelper.org开源的sqlhelper组件,优点是简洁,高性能,不...

    数据连接类SqlHelper

    SqlHelper 是一个在IT行业中广泛使用的工具类,主要用于简化数据库操作,尤其是对于.NET框架下的C#开发者来说。这个类库通常包含一系列静态方法,提供了一种便捷的方式来执行SQL语句,进行数据的增、删、改、查...

    Sqlhelper类的的内容

    Sqlhelper类的的内容Sqlhelper类的的内容Sqlhelper类的的内容Sqlhelper类的的内容Sqlhelper类的的内容Sqlhelper类的的内容Sqlhelper类的的内容Sqlhelper类的的内容Sqlhelper类的的内容

    最新强大而简便的SqlHelper类

    2,所以数据库操作只需要调用SQLHelper中的方法即可.DataAccess类是在SQLHelper类内部调用的类. 3,使用前请先执行以下方法,以进行类初始化: string DBConnectionString = "data source=.;database=Northwind;user id...

    SQLHelper类的使用

    在.NET框架中,SQLHelper类是用于简化与数据库交互过程的一个强大工具,它封装了常见的SQL操作,如执行查询、插入、更新和删除等。这一类位于Microsoft.ApplicationBlocks.Data命名空间下,通常需要引用Microsoft....

    微软的C#操作数据库类SQLHelper

    SQLHelper是微软.NET框架下的一种实用工具类,用于简化C#程序中对SQL Server数据库的操作。这个类的主要目的是为了提供一种方便、安全的方式来执行SQL语句,包括但不限于INSERT、UPDATE、DELETE以及SELECT查询。它的...

    sqlhelper 中文详细注解与几个运用实例

    6. **实例分析**:压缩包中的"help"文件可能包含了一些使用SQLHelper的示例代码,这些实例将覆盖常见的数据库操作,如添加新记录、修改现有记录、查询数据等。通过这些实例,你可以看到SQLHelper在实际项目中的应用...

    SqlHelper数据库连接类

    在SqlHelper类的设计中,主要包含以下几个关键功能: 1. **连接管理**:SqlHelper类负责创建、打开、关闭和释放SqlConnection对象。通过使用连接池,可以有效地管理数据库连接,减少资源消耗。在完成数据库操作后,...

Global site tag (gtag.js) - Google Analytics