import java.io.*;
import java.sql.*;
import java.util.*;
import javax.servlet.jsp.jstl.sql.*;
public class DBHelper { private String sql; //要传入的sql语句
public void setSql(String sql) {
this.sql = sql;
} private List sqlValues; //sql语句的参数
public void setSqlValues(List sqlValues) {
this.sqlValues = sqlValues;
}
private Connection con; //连接对象
public void setCon(Connection con) {
this.con = con;
} public DBHelper(){
this.con=getConnection(); //给Connection的对象赋初值
} /**
* 获取数据库连接
* @return
*/
private Connection getConnection(){ String driver_class=null;
String driver_url=null;
String database_user=null;
String database_password=null;
try {
InputStream fis=this.getClass().getResourceAsStream("/db.properties"); //加载数据库配置文件到内存中
Properties p=new Properties();
p.load(fis); driver_class=p.getProperty("driver_class"); //获取数据库配置文件
driver_url=p.getProperty("driver_url");
database_user=p.getProperty("database_user");
database_password=p.getProperty("database_password"); Class.forName(driver_class);
con=DriverManager.getConnection(driver_url,database_user,database_password); } catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
} /**
* 关闭数据库
* @param con
* @param pst
* @param rst
*/
private void closeAll(Connection con,PreparedStatement pst,ResultSet rst){
if(rst!=null){
try {
rst.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} if(pst!=null){
try {
pst.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} if(con!=null){
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} } /**
* 查找
* @param sql
* @param sqlValues
* @return
*/
public Result executeQuery(){
Result result=null;
ResultSet rst=null;
PreparedStatement pst=null;
try { pst=con.prepareStatement(sql);
if(sqlValues!=null&&sqlValues.size()>0){ //当sql语句中存在占位符时
setSqlValues(pst,sqlValues);
}
rst=pst.executeQuery();
result=ResultSupport.toResult(rst); //一定要在关闭数据库之前完成转换 } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.closeAll(con, pst, rst);
} return result;
} /**
* 增删改
* @return
*/
public int executeUpdate(){
int result=-1;
PreparedStatement pst=null;
try {
pst=con.prepareStatement(sql);
if(sqlValues!=null&&sqlValues.size()>0){ //当sql语句中存在占位符时
setSqlValues(pst,sqlValues);
}
result=pst.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.closeAll(con, pst, null);
} return result;
} /**
* 给sql语句中的占位符赋值
* @param pst
* @param sqlValues
*/
private void setSqlValues(PreparedStatement pst,List sqlValues){
for(int i=0;i<sqlValues.size();i++){
try {
pst.setObject(i+1,sqlValues.get(i));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

DbHelper 标准类的更多相关文章

  1. [Effective JavaScript 笔记]第40条:避免继承标准类

    ECMAScript标准库里配备了许多重要的类,如Array,function,以及Date等.扩展这些类生成子类可以方便完成很多工作,但它们的定义具有很多特殊的行为,所以很难写出行为正确的类. Ar ...

  2. [C#]实现任何数据库类型的DbHelper帮助类

    本文章为原创内容,如需转载,请注明作者及出处,谢谢! 一.在System.Data.Common命名空间下,存在这样的一个类: // // 摘要: // 表示一组方法,这些方法用于创建提供程序对数据源 ...

  3. PHP内置标准类

    PHP内置标准类 php语言内部,有“很多现成的类”,其中有一个,被称为“内置标准类”. 这个类“内部”可以认为什么都没有,类似这样: class  stdclass{ } 其作用,可以用于存储一些临 ...

  4. EF(Entity Framework)通用DBHelper通用类,增删改查以及列表

    其中 通用类名:DBhelper 实体类:UserInfo 1 //新增 2 DBHelper<UserInfo> dbhelper = new DBHelper<UserInfo& ...

  5. Phone-java标准类

    //project-module-package //.代表包的目录层次 package cn.learn.day01.demo01; /* 1.类是一组相关属性(成员变量)与行为(方法)的集合,对象 ...

  6. 标准类 (Java Bean)

    一个标准类通常包括四个部分: 1.所有成员变量都要用 private 关键字修饰 2.为每一个成员变量编写一对 Getter/Setter 方法 3.编写一个无参数的构造方法 4.编写一个全参数的构造 ...

  7. .net 在数据访问层中写一个DBhelper优化类

    复习了在学校的时候做的WinForm端的一个学生信息管理系统,用的三层架构,看了一下里面的数据优化类 这个类是用来把对数据库的操作封装成静态方法,增删改查的时候直接调用这个类,减少项目里代码的冗余和方 ...

  8. 万能的DBHelper帮助类

    DBHelper类: 简单的理解就是一个工具箱,我要用锤子的时候就在里面拿,我要用剪刀的时候也可以在里面拿,前提是我们写的DBHelper够不够强大! 软件中的四大功能:增.删.改.查  我们要实现这 ...

  9. java自学第4期——:Scanner类、匿名对象介绍、Random类、ArrayList集合、标准类格式、String类、static静态、Arrays工具类、Math类(1)

    一.Scanner类 1.api简介: 应用程序编程接口 2.Scanner类: 作用:获取键盘输入的数据 位置: java.util.Scanner. 使用:使用成员方法nextInt() 和 ne ...

随机推荐

  1. odoo views中html的奇怪问题

    在我创建了字段类型为 fields.Html 以后,确出现了两种不同的情况 下图中,content是此类型的,可以正常显示不需要加widget(小部件)="html" <fo ...

  2. 【科普】.NET6 泛型

    本文内容来自我写的开源电子书<WoW C#>,现在正在编写中,可以去WOW-Csharp/学习路径总结.md at master · sogeisetsu/WOW-Csharp (gith ...

  3. react 结合gitte 创建项目(详情步骤)

    ​ 创建项目第一步 基本搭建 在创建之前,需要有一个git 仓库,我们要把项目搭建到git 中 目录介绍 cd 到某个盘 mkdir workspace 创建workspace文件夹 cd works ...

  4. Spring整合ActiveMQ实现消息延迟投递和定时投递

    linux(centos)系统安装activemq参考:https://www.cnblogs.com/pxblog/p/12222231.html 首先在ActiveMQ的安装路径 /conf/ac ...

  5. 【LeetCode】857. Minimum Cost to Hire K Workers 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/minimum- ...

  6. [error]Flask Address already in use

    在Python的Flask框架下Address already in use [地址已在使用中] 出现这种错误提示, 说明你已经有一个流程绑定到默认端口(5000).如果您之前已经运行过相同的模块,则 ...

  7. CS5216 DP转HDMI 1080P方案|CS5216参数|CS5216中文规格书

    Capstone CS5216是一款单端口/中继器,具有重新定时功能.它支持交流和直流耦合3.0-Gbps操作,可编程均衡和抖动清除.它包括DP电缆适配器寄存器,可用于识别电缆适配器的功能.这个抖动清 ...

  8. MySQL数据库报错 > 1366 - Incorrect string value: ‘\xE6\xB1\x9F\xE6\x96\x87‘ for column ‘Teacher‘ at row 1

    数据库报错这个多半是数据库在创建的时候没有选择字符编码,导致输入中文的时候出现报错. > 1366 - Incorrect string value: '\xE6\xB1\x9F\xE6\x96 ...

  9. python 设计模式:单例模型

    一.单例模型简介 代码的设计模式共有25种,不同的应用场景应用不同的设计模式,从而达到简化代码.利于扩展.提高性能等目的.本文简述Python实现的单例模式场景.简而言之,单例模式的应用场景是一个类对 ...

  10. centos7 配置JDK

    // 查看是否有jdk  rpm -qa | grep java 卸载掉系统自带的jdk(箭头标识),命令:rpm -e --nodeps  后面跟系统自带的jdk名 比如:rpm -e --node ...