首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

用数据库链接池的程序如何改写成用javabean的呢

2011-12-29 
用数据库链接池的程序怎么改写成用javabean的呢?代码如下想改成javaBean连接的packagemsdn.javabeanimpor

用数据库链接池的程序怎么改写成用javabean的呢?
代码如下   想改成   javaBean   连接的


package   msdn.javabean;
import   java.sql.*;
import   javax.naming.*;
import   javax.sql.*;

import   sun.jdbc.rowset.*;

/**
  *   <p> Title:   基础数据库操作类 </p>
  *   <p> Description:   </p>
  *   <p> Copyright:   Copyright   (c)   2006 </p>
  *   <p> Company:   </p>
  *   @author   hellion
  *   @version   1.0
  */

public   class   DBManager   {
    public   static   final   String   DATABASE   =   "java:comp/env/jdbc/database ";

    public   DBManager()   {
    }

    /**
      *   取数据库连接
      *   @param   jndi   数据库连接JNDI
      *   @return   数据库连接
      *   @throws   Exception
      */
    public   static   Connection   getConnection(String   jndi)   throws   Exception   {
        Connection   conn   =   null;
        try   {
            Context   initCtx   =   new   InitialContext();

            DataSource   ds   =   (DataSource)   initCtx.lookup(jndi);
            conn   =   ds.getConnection();
            conn.setAutoCommit(false);
        }
        catch   (Exception   e)   {
            e.printStackTrace();
        }
        return   conn;
    }

    public   static   Connection   getConnection()   throws   Exception   {
        return   getConnection(DATABASE);
    }

    public   static   void   cleanup(Connection   conn,   PreparedStatement   ps)   {
        try   {

            if   (ps   !=   null)   {
                ps.close();
            }
        }
        catch   (Exception   e)   {
            e.printStackTrace();
        }
        try   {
            if   (conn   !=   null   &&   !conn.isClosed())   {
                conn.close();
            }
        }
        catch   (Exception   e)   {
            e.printStackTrace();
        }
    }

    protected   static   void   cleanup(Connection   conn,   PreparedStatement   ps,
                                                                ResultSet   rs)   {



        try   {
            if   (rs   !=   null)   {
                rs.close();
            }
        }
        catch   (Exception   e)   {
            e.printStackTrace();
        }
        try   {
            if   (ps   !=   null)   {
                ps.close();
            }
        }
        catch   (Exception   e)   {}
        try   {
            if   (conn   !=   null   &&   !conn.isClosed())   {
                conn.close();
            }
        }
        catch   (Exception   e)   {
            e.printStackTrace();
        }
    }

    /**
      *查询默认数据库的数据
      *   @param   sql
      *   @deprecated
      *   @return
      *   @throws   Exception
      */
    public   static   CachedRowSet   executeQuery(String   sql)   {
        return   executeQuery(sql,   DBManager.DATABASE);
    }

    /**
      *
      *   @param   sql
      *   @param   databasejndi
      *   @deprecated
      *   @return
      *   @throws   Exception
      */
    public   static   CachedRowSet   executeQuery(String   sql,   String   databasejndi)   {
        CachedRowSet   crs   =   null;
        Statement   st   =   null;
        Connection   conn   =   null;
        ResultSet   rs   =   null;
        try   {
            crs   =   new   CachedRowSet();
            conn   =   DBManager.getConnection(databasejndi);
            st   =   conn.createStatement();
            rs   =   st.executeQuery(sql);
            crs.populate(rs);
        }
        catch   (Exception   se)   {
            System.out.println( "SQLException   in   DBManager.exceuteQuery,   sql   is   :\n "   +
                                                  sql);
            se.printStackTrace();


        }
        finally   {
            DBManager.cleanup(conn,   null,   rs);
        }
        return   crs;
    }

    /**
      *   通用查询   默认数据库
      *   @param   sql
      *   @param   values
      *   @return   CachedRowSet
      */
    public   static   CachedRowSet   executeQuery(String   sql,   Object[]   values)   {
        return   executeQuery(sql,   values,   DBManager.DATABASE);
    }

    /**
      *   通用查询
      *   @param   sql
      *   @param   values
      *   @param   dataBase
      *   @return
      */
    public   static   CachedRowSet   executeQuery(String   sql,   Object[]   values,
                                                                                    String   dataBase)   {
        System.out.println( "sql: "+sql);
        CachedRowSet   crs   =   null;
        PreparedStatement   st   =   null;
        Connection   conn   =   null;
        ResultSet   rs   =   null;
        try   {
            crs   =   new   CachedRowSet();
            if   (values   ==   null   ||   values.length   <   1)   {
                return   executeQuery(sql);
            }
            conn   =   DBManager.getConnection(dataBase);
            st   =   conn.prepareStatement(sql);
            for   (int   i   =   0;   i   <   values.length;   i++)   {
                st.setObject(i   +   1,   values[i]);
            }
            rs   =   st.executeQuery();
            crs.populate(rs);
        }
        catch   (Exception   se)   {
            System.out.println( "SQLException   in   DBManager.exceuteQuery,   sql   is   :\n "   +
                                                  sql);
            se.printStackTrace();
        }
        finally   {
            DBManager.cleanup(conn,   null,   rs);


        }
        return   crs;
    }

    /**
      *   执行update,delete,insert   操作.
      *   @param   sql
      *   @deprecated
      *   @return
      *   @throws   Exception
      */
    public   static   int   executeUpdate(String   sql)   {
        Statement   st   =   null;
        Connection   conn   =   null;
        int   result   =   0;
        try   {
            conn   =   DBManager.getConnection(DBManager.DATABASE);
            st   =   conn.createStatement();
            result   =   st.executeUpdate(sql);
            conn.commit();
        }
        catch   (Exception   se)   {
            try   {
                conn.rollback();
            }
            catch   (Exception   es)   {
                es.printStackTrace();
            }
            System.out.println( "SQLException   in   DBConnet.exceuteQuery,   sql   is   :\r\n "   +
                                                  sql   +   "   \r\nerror   is: "   +   se.getMessage());
            se.printStackTrace();
        }
        finally   {
            DBManager.cleanup(conn,   null,   null);
        }
        return   result;

    }

    /**
      *   执行数据修改操作。
      *   @param   sql
      *   @param   values
      *   @return
      */
    public   static   int   executeUpdate(String   sql,   Object[]   values)   {
        Connection   conn   =   null;
        PreparedStatement   ps0   =   null;
        int   rows   =   0;
        try   {
            conn   =   getConnection(DBManager.DATABASE);
            ps0   =   conn.prepareStatement(sql);
            for   (int   i   =   0;   i   <   values.length;   i++)   {
                ps0.setObject(i   +   1,   values[i]);
            }
            rows   =   ps0.executeUpdate();


            conn.commit();
        }
        catch   (Exception   e)   {
            try   {
                conn.rollback();
            }
            catch   (Exception   ex)   {
                ex.printStackTrace();
            }
            e.printStackTrace();
        }
        finally   {
            cleanup(conn,   ps0);
        }
        return   rows;
    }

}


server.xml   文件

<Resource   name= "jdbc/database "   type= "javax.sql.DataSource "   username= "sa "   password= "sa "   driverClassName= "com.microsoft.jdbc.sqlserver.SQLServerDriver "   maxIdle= "2 "   maxWait= "50 "   url= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=chinamsdn "   maxActive= "100 "/>

我的博客   www.liyingfei.com

[解决办法]
javabean连接的无非就是getConnection这个函数中的连接操作不再是DataSource ds = (DataSource) initCtx.lookup(jndi);
conn = ds.getConnection();
而是
Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver ");
conn = Driver.getConnect( "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=chinamsdn ",sa ", "sa ");

之类的东西
[解决办法]
楼上正解..
[解决办法]
你的那个程序好像已经就是javabean了,
[解决办法]
public Connection getConnection() {
Connection conn = null;
try {
//加载驱动
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
//获得Connection对象
con = DriverManager.getConnection( "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=test ", "sa ", " ");
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
[解决办法]
这个程序是用到了连接池技术 能具体结合这个例子 具体写一下 怎么不用连接池 把数据库链接直接写在java 文件里面呢》?
===================================================
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ");
Connection conn =DriverManager.getConnection( "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test ", "sa ", " ");

热点排行