`
kkllmey
  • 浏览: 101933 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JDBC工具类(ConDB、Dao、MyProperties、MyException、db属性文件)

阅读更多

1.自定义异常类

package com.ownhome.exception;

/**
 * 自定义异常类
 * @author admin
 *
 */
public class MyException extends Exception {
	protected Throwable throwable;
	
	/*构造方法*/
	public MyException(String msg){
		super(msg);
	}
	/*构造方法*/
	public MyException(String msg,Throwable throwable){
		super(msg);
		this.throwable=throwable;
	}
	
	
//	/*得到异常*/
//	public Throwable getEx(){
//		return this.throwable;
//	}
	
	
	/*重写父类方法*/
	@Override
	public void printStackTrace() {
		super.printStackTrace();/*调用父类的方法*/
		if(throwable!=null){
			throwable.printStackTrace();/*输出异常*/
		}
	
	}
	
}

 

 

 

2.db属性文件

 

   driverClass=sun.jdbc.odbc.JdbcOdbcDriver
   url=jdbc:odbc:driver={Sql Server};database=ownHome;server=.
   uid=sa
   pwd=abc

 

3. MyProperties类[单例模式]

package com.ownhome.common;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import com.ownhome.exception.MyException;

/**
 * 用单模式实现从Properties文件里读取连接数据库的参数
 * @author admin
 *
 */
public class MyProperties extends Properties{
	
	
	/*静态属性*/
	private static MyProperties myPro;
	
	/*构造方法*/
	private MyProperties() throws MyException{
		InputStream is=this.getClass().getResourceAsStream("db.properties");
		try {
			this.load(is);
		} catch (IOException e) {
			throw new MyException("读取属性文件错误 !",e);
		}
	}
	
	
	/*公有的静态方法,得到MyProperties对象*/
	public static MyProperties getPro(){
		if(myPro!=null){
			return myPro;
		}
		init();
		return myPro;
		
	}
	
	
	/*实现同步机制,初始化内部属性*/
	private synchronized static void init(){
		if(myPro==null){
			try{
				myPro=new MyProperties();	
			}catch(MyException e){
				e.printStackTrace();
			}
		}
	}
}

 

4.ConDB连接工厂类[工厂模式]

 

package com.ownhome.common;

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import com.ownhome.exception.MyException;

/**
 * 连接数据库类
 * @author admin
 *
 */
public class ConDB {
	
//	/*静态方法,属性文件得到连接对象 */
//	public static Connection getCon() throws MyException{
//		
//		MyProperties myPro=MyProperties.getPro();
//		try{
//			Class.forName(myPro.getProperty("driverClass"));
//			return DriverManager.getConnection(myPro.getProperty("url"));
//		}catch(ClassNotFoundException e){
//			throw new MyException("注册驱动错误!",e);
//		}catch(SQLException e){
//			throw new MyException("得到Con连接对象错误",e);
//		}
//	}
	
	/*JNDI方式*/
	public static Connection getCon() throws MyException{
		try {
			Context ic=new InitialContext();
			DataSource source=(DataSource)ic.lookup("java:comp/env/jdbc/ownhome");
			return source.getConnection();
		} catch (NamingException e) {
			throw new MyException("JNDI查找错误@!",e);
		} catch (SQLException e) {
			throw new MyException("得到Connection对象错误!",e);
		}
	}
}

 

5. Dao类工具类

 

package com.ownhome.common;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.jsp.jstl.sql.Result;
import javax.servlet.jsp.jstl.sql.ResultSupport;

import com.ownhome.exception.MyException;

/**
 * Dao类,对数据库进行操作
 * @author admin
 *
 */
public class Dao {
	private Connection con;		
	private String sql;
	private List values;

	public void setCon(Connection con) {
		this.con = con;
	}

	public void setSql(String sql) {
		this.sql = sql;
	}
	/**
	 * 设置sql字符串中?的值
	 * @param values
	 */
	public void setValues(List values) {
		this.values = values;
	}

	/*为sql语句的所有的?设置值*/
	private void setValues(PreparedStatement ps) throws MyException {

		if (values != null) {
			try {
				for (int i = 1; i <= values.size(); i++) {
					ps.setObject(i, values.get(i - 1));
				}
			} catch (SQLException e) {
				throw new MyException("设置sql中参数的值?时出错", e);
			}
		}
	}
	/*决断必需的属性是否为空*/
	private boolean isNull(){
		if(con==null||sql==null||sql.equals("")){
			return true;
		}
		return false;
		
	}
	/**
	 * 查询
	 * @return
	 */
	public Result executeQuery() throws MyException{
		ResultSet rs;
		Result result = null;
		if(isNull()){
			throw new MyException("未初始化Con或Sql属性!");
		}
		try{
			PreparedStatement ps=con.prepareStatement(sql);
			this.setValues(ps);
			rs=ps.executeQuery();
			result=ResultSupport.toResult(rs);
			con.close();
		}catch(SQLException e){
			throw new MyException("用PreparedStatement执行查询时出错",e);
		}catch(MyException e){
			e.printStackTrace();
		}
		return result;
		
	}
	/**
	 * 修改,删除,增加
	 * @return
	 */
	public int executeUpdate() throws MyException{
		int count=0;
		if(isNull()){
			throw new MyException("未初始化Con或Sql属性");
		}
		try{
			PreparedStatement ps=con.prepareStatement(sql);
			this.setValues(ps);
			count = ps.executeUpdate();
			con.close();
		}catch(SQLException e){
			throw new MyException("用PreparedStatement执行更新时出错!",e);
		}catch(MyException e){
			e.printStackTrace();
		}
		return count;
	}
}






分享到:
评论

相关推荐

    java 对于文件的读写操作

    MyProperties.java ReadAndPrintXMLFile.java book.xml 博文链接:https://efish.iteye.com/blog/230123

    createClass:在 JavaScript 中使用类的简单方法

    创建类createClass - 在 JavaScript 中使用类的简单方法。例子在测试中查看更多示例。简单的 var SomeClass = createClass({ myProperties: 123, myMethod: function() { return this.myProperties; }});var obj = ...

    ADP4J.zip

    Annotation Driven Properties For Java (ADP4J) 是一个在 Java 对象中使用注解方式来注入配置属性的类库。 示例代码: public class Bean { @SystemProperty("threshold") private int threshold; @...

    《深度学习入门:基于Python的理论与实现》案例实现.zip

    《深度学习入门:基于Python的理论与实现》案例实现.zip

    node-v6.14.0-sunos-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v6.15.1-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v6.10.3-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    PyTorch深度学习 —— 基于小土堆视频等资料.zip

    PyTorch深度学习 —— 基于小土堆视频等资料.zip

    node-v6.9.5-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v18.9.1-headers.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    java操作linux示例代码

    Linux,一般指GNU/Linux(单独的Linux内核并不可直接使用,一般搭配GNU套件,故得此称呼),是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它支持32位和64位硬件,能运行主要的Unix工具软件、应用程序和网络协议。 Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。 实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。

    openssl C++跨平台库

    是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。

    node-v6.11.2-sunos-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v6.3.1-sunos-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    SSM+JSP项目-学报稿件管理系统的Java毕业设计(源码+演示视频+说明).rar

    SSM+JSP项目-学报稿件管理系统的Java毕业设计(源码+演示视频+说明).rar 【项目技术】 开发语言:Java 框架:ssm+jsp 架构:B/S 数据库:mysql 【演示视频-编号:424】 https://pan.quark.cn/s/b3a97032fae7 【实现功能】 实现了稿件基础数据的管理,稿件的审核,作者管理,专家管理,公告信息的发布等功能。

    Arduino平台基于GFX库的消息显示UI设计

    Arduino平台基于GFX库的消息显示UI设计包含Arduino ino文件以及.c .h文件

    基于python的气象数据处理

    数据处理 |--- 处理气象数据(nc文件) 操作说明: nc 文件命名为:deal_nc.nc,放到data目录下 1、 执行parse_nc.py,解析nc文件,同时在data目录下生成.npy数据文件 2、 执行draw_data.py ,获取.npy数据,并绘制图形

    node-v4.4.6-sunos-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v21.3.0-headers.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于SSM+JSP的淘乐乐员工购物商城毕业设计(源码+录像+说明).rar

    基于SSM+JSP的淘乐乐员工购物商城毕业设计(源码+录像+说明).rar 【项目技术】 开发语言:Java 框架:ssm+jsp 架构:B/S 数据库:mysql 【演示视频-编号:494】 https://pan.quark.cn/s/b3a97032fae7 【实现功能】 系统可以提供信息显示和相应服务,其管理员增删改查商品信息和商品信息资料,审核商品信息预订订单,查看订单评价和评分,通过留言功能回复用户提问。

Global site tag (gtag.js) - Google Analytics