JDBC 对数据库连接的封装

1.BaseDao :抽象基类,其中定义了用于打开连接,得到Statement,执行SQL,关闭资源的基础数据库操作方法。

2.I***Dao :操作指定数据表的接口:定义了操作数据表的抽象方法。

3***DaoImpl:具体工具类。实现I***Dao接口,继承BaseDao抽象类。用BaseDao中的方法实现I***Dao接口中定义的抽象接口。

基类用来提供访问数据库的基础方法,接口中定义了操作一个数据表所用到的方法。而具体类继承了基类就可以访问数据库,实现了接口就可以使用接口来操作数据库。

这样使得对类的依赖停留在接口层次。

下面用Oracle数据库中的 CUSINFO 表为目标数据表实现:

1.BaseDao 抽象基类

package org.oracal.dao;

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

/*
 *@author:上官云清
 *@time:2014年8月5日
 *@todo:基础的DAO 工具类
 *@version: v1.0
 */

/**
 * @author:上官云清
 *
 */
public abstract class BaseDao {

private final static String DRIVER="oracle.jdbc.driver.OracleDriver";
    private final String URL="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
    private final String NAME="gsuser";
    private final String PASSW="gsuser";
    private Connection con = null;
    private PreparedStatement pstmt = null;
    private ResultSet set = null;
    
    /**
     * 加载数据库驱动
     *
     */
    static {
    try {
        Class.forName(DRIVER);
        } catch (ClassNotFoundException e) {
        e.printStackTrace();
        }
    }
    
    private  Connection getConnection(){
    Connection con =null;
    try {
        con = DriverManager.getConnection(URL, NAME , PASSW);
        } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }
    return con;
    }
    /**
     * @param sql : select 语句
     *@param params 参数
     *@return:
     */
    public int  executeUpdate( String sql , List<Object> params){
    int i = 0;
    this.con = this.getConnection();
    try {
        this.pstmt = con.prepareStatement(sql);
        //add params
        if(params!=null){
        for( int j =0;j<params.size();j++){
            this.pstmt.setObject(j+1, params.get(j));
        }
        }
        this.pstmt.executeQuery();
        } catch (SQLException e) {
        e.printStackTrace();
        }finally{
           this.closeAll();
        }
    
    return i;
    }
    
    public ResultSet executeQuery( String sql , List<Object> params){
    this.con = this.getConnection();
    try {
        this.pstmt = con.prepareStatement(sql);
        //add params
        if(params!=null){
        for( int j =0;j<params.size();j++){
            this.pstmt.setObject(j+1, params.get(j));
        }
        }
        set = pstmt.executeQuery();
        } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }finally{
        }
    return set;
    }

private void closeResultSet(){
    try{
    if(set!=null){
        set.close();
        set=null;
    }
    }
    catch(SQLException e){
        e.printStackTrace();
    }
    }

private void closePreparedStatement(){
    if( this.pstmt!=null){
        try {
            this.pstmt.close();
            } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            }
        this.pstmt =null;
    }
    }

private void closeConncetion(){
    if(this.con!=null){
        try {
            this.con.close();
            } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            }
        this.con = null;
    }
    }
    
    public void closeAll(){
    this.closeResultSet();
    this.closePreparedStatement();
    this.closeResultSet();
    }
}

2.ICusinfoDao接口:

package org.oracal.dao;

import java.util.List;

import org.oracal.vo.Cusinfo;

/*
 *@author:上官云清
 *@time:2014年8月5日
 *@todo:TODO
 *@version:
 */
public interface ICusinfoDao {

public int save(Cusinfo cusinfo);
    public int delete(String cusno);
    public List<Cusinfo> selectAllInfo();
    public Cusinfo selectOneInfo(String cusno);
    
}

3.CusinfoDaoImpl 具体类,具体工具类

package org.oracal.dao.impl;

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

import org.oracal.dao.BaseDao;
import org.oracal.dao.ICusinfoDao;
import org.oracal.vo.Cusinfo;

/*
 *@author:上官云清
 *@time:2014年8月5日
 *@todo:TODO
 *@version:
 */
public class CusinfoDaoImpl extends BaseDao implements ICusinfoDao {

@Override
    public int save(Cusinfo cusinfo) {
    // TODO Auto-generated method stub
    String sql = "insert into cusinfo(cusno , cusname) values(?,?)";
    List<Object> params = new ArrayList<Object>();
    params.add(cusinfo.getCusNo());
    params.add(cusinfo.getCusName());
    return this.executeUpdate(sql, params);
    }

@Override
    public int delete(String cusno) {
    // TODO Auto-generated method stub
    return 0;
    }

@Override
    public List<Cusinfo> selectAllInfo() {
    // TODO Auto-generated method stub
    List<Cusinfo> list = new ArrayList<Cusinfo>();
    String sql = "select * from cusinfo";
    ResultSet rs = this.executeQuery(sql, null);
    try {
        while(rs.next()){
            Cusinfo cus = new Cusinfo();
            cus.setCusNo(rs.getString("cusno"));
            cus.setCusName(rs.getString("cusname"));
            list.add(cus);
        }
        } catch (SQLException e) {
        e.printStackTrace();
        }
    this.closeAll();
    return list;
    }

@Override
    public Cusinfo selectOneInfo(String cusno) {
    // TODO Auto-generated method stub
    Cusinfo cus = new Cusinfo();
    String sql = "select * from cusinfo where cusno = ?";
    List<Object> params = new ArrayList<Object>();
    params.add(cusno);
    ResultSet rs= this.executeQuery(sql, params);
    if(rs!=null){
        try {
            rs.next();
            cus.setCusNo(rs.getString("cusno"));
            cus.setCusName(rs.getString("cusname"));
            } catch (SQLException e) {
            e.printStackTrace();
            }
    }
    this.closeAll();
    return cus;
    }

}

JDBC 对数据库连接的封装

时间: 2024-11-05 18:47:13

JDBC 对数据库连接的封装的相关文章

新浪云web项目数据库连接及 封装

[重点]Class.forName("com.mysql.jdbc.Driver");//数据库连接语句声明 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bbs","root","root"); //本地mysql数据库JDBC连接语句(项目名bbs登录名root密码root) conn = DriverManager.getConnectio

数据库连接JDBC和数据库连接池C3P0自定义的java封装类

数据库连接JDBC和数据库连接池C3P0自定义的java封装类 使用以下的包装类都需要自己有JDBC的驱动jar包: 如 mysql-connector-java-5.1.26-bin.jar(5.1.26代表的是版本序列号) 一.JDBC的封装:(java连接MySQL) 1 import java.sql.*; 2 3 import utils.GlobalConstant; 4 5 public class JDBCUtil { 6 7 private JDBCUtil() { 8 9 }

Java -- JDBC 学习--数据库连接池

JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet.beans)中建立数据库连接. 进行sql操作 断开数据库连接. 这种模式开发,存在的问题: 普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码(得花费0.05s-1s的时间).需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接.这样的方式将会消耗大量的资源和

浅谈JavaEE中的JDBC模板类的封装实现以及合理的建立项目包结构(一)

从今天开始我们一起来聊下有关,javaEE开发中的一些知识,JavaEE的开发用于企业级的开发,但是现在企业中一般也不会使用JDBC开发,大部分都是使用自己公司开发的一套的框架,但是这些框架的架构一般也是会模仿着有名JavaEE开源三大开发框架SSH(Struts2+Spring+Hibernate)或者现在也很流行的SSM开发框架(Spring+SpringMVC+MyBatis) 来进行深度定制以便于适合自己企业的实际开发需求.有的人曾说既然去公司又是重新学习一套框架,还有必要学习开源的三大

jdbc连接Mysql方法封装

package com.shopping.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DB { static { try { Class.forNam

JAVA jdbc获取数据库连接

JDBC获取数据库连接的帮助类 1 import java.io.InputStream; 2 import java.sql.Connection; 3 import java.sql.DriverManager; 4 import java.sql.ResultSet; 5 import java.sql.Statement; 6 import java.util.Properties; 7 8 public class jdbcUtil { 9 10 private static Stri

JDBC和数据库连接池

在Java语言中,JDBC(JavaDataBase Connection)是应用程序与数据库沟通的桥梁, 即Java语言通过JDBC技术访问数据库.JDBC是一种"开放"的方案,它为数据库应用开发人员﹑数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序.JDBC提供两种API,分别是面向开发人员的API和面向底层的JDBC驱动程序API,底层主要通过直接的JDBC驱动和JDBC-ODBC桥驱动实现与数据库的连接. 一般来说,

JDBC 关闭数据库连接与自动提交【转】

// Jdbc关闭数据库连接时,会隐含一个提交事务的操作 private final static String DB_DRIVER = "oracle.jdbc.driver.OracleDriver"; private final static String DB_CONNECTION = "jdbc:oracle:thin:@127.0.0.1:1521:mydb01"; private final static String DB_NAME = "

JDBC与数据库连接,查询

JDBC与数据库连接,查询package jdbc; import java.sql.*;//数据库相关库 public class TestJDBC { public static void main(String[] args) { final String DBDRIVER="org.mariadb.jdbc.Driver";//数据库连接驱动,对于每一种数据库都不一样 final String DBURL="jdbc:mariadb://localhost:3306/