`
陈新杰
  • 浏览: 105532 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

jdbc数据访问层diy

    博客分类:
  • java
阅读更多

用jdbc写sql层的时候diy了一个DAL类,将一些常用的sql操作(增,删,查,改)写在了一个静态类里面,形成了一个简单的sql操作工具类,在DAO层要用到sql操作的时候直接调用类的静态方法使用就行了,同时配了数据源,此例子是使用了proxool数据源,及一些简单的数据动态配置:

代码如下:

package com.db;

//数据库访问层
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.RowSet;
import javax.sql.rowset.CachedRowSet;
import org.apache.log4j.Logger;
import com.sun.rowset.CachedRowSetImpl;

public class DAL
{

    private static Logger log = Logger.getLogger(DAL.class);
    private static String dburl = null;

    private static boolean inited = false;

    /**
     * 得到一个已联接好的数据库联连 一般用于过程执行
     * 
     * @return
     */
    public static Connection getConn()
    {
        try
        {
            // 使用连接池
            if (inited)
            {
                return DriverManager.getConnection("proxool.city");
            }

            if (dburl == null)
            {
                InputStream in = new BufferedInputStream(DAL.class.getResourceAsStream("db.pro"));
                Properties p = new Properties();
                p.load(in);
                dburl = p.getProperty("mysqlurl");
                log.debug(dburl);
            }

            Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
            Connection conn = DriverManager.getConnection("proxool.city:com.mysql.jdbc.Driver:" + dburl);
            inited = true;
            return conn;

        }
        catch (Exception e)
        {
            e.printStackTrace();
            
        }
        return null;
    }

    /**
     * 对数据库执行查询方法
     * 
     * @param sql
     * @return
     */
    public static RowSet query(String sql)
    {
        Connection conn = getConn();
        ResultSet rs;
        try
        {
            Statement s = conn.createStatement();
           log.debug(sql);
            rs = s.executeQuery(sql);
            CachedRowSet crs = new CachedRowSetImpl();
            crs.populate(rs);
            conn.close();
            return crs;
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 对数据库执行更新打操作
     * 
     * @param sql
     * @return
     */
    public static int exec(String sql)
    {
        Connection conn = getConn();
        int rt;
        try
        {
            log.debug(sql);
            Statement s = conn.createStatement();
            rt = s.executeUpdate(sql);

            conn.close();
            return rt;
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return 0;
    }

    /**
     * 对数据库进行添加操作
     * 
     * @param sql
     * @return
     */
    public static int add(String sql)
    {
        Connection conn = getConn();
        int rt;
        try
        {
            log.debug(sql);
            Statement s = conn.createStatement();
            rt = s.executeUpdate(sql);

            conn.close();
            return rt;
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return 0;
    }

    /**
     * 对数据库进行删除操作
     * 
     * @param sql
     * @return
     */
    public static int del(String sql)
    {
        Connection conn = getConn();
        int rt;
        try
        {
           log.debug(sql);
            Statement s = conn.createStatement();
            rt = s.executeUpdate(sql);

            conn.close();
            return rt;
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return 0;
    }
    //测试数据库连接
   public static void main(String args[])throws Exception{
	  System.out.println("得到一个数据连接  "+getConn()) ;
   }
}

 

 

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics