chen_vampire
2011-10-15 17:24
浏览 277

jsp中怎么将加载驱动,创建数据库连接那些语句打包使用?

[size=small]最近碰到的一问题,在多个jsp页面中都有数据库操作语句,比如说加载驱动,创建数据库连接以及查询修改语句,怎么将他们抽象成一个类,然后在每次要使用连接数据库时,调用那个类得对象呢?
求大神给看看,指导指导!分全砸给你了![/size][size=medium][/size]

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • DreamZhong 2011-10-15 18:13
    已采纳

    你想用一个类来实现这么多功能,不觉得这样类会变得很大,职责不清晰了嘛

    点赞 打赏 评论
  • AngelAndAngel 2011-10-15 19:18

    自己可以根据需要改装一下,比如数据库连接语句,驱动什么的。直接用DB这个类就可以搞定了
    [code="java"]
    public class DB {
    private Connection con;
    private PreparedStatement pstm;
    private String user="sa";
    private String password="";
    private String className="com.microsoft.jdbc.sqlserver.SQLServerDriver";
    private String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_shopcar";

    /** 构造方法,在该方法中加载数据库驱动  */
    public DB(){
        try{
            Class.forName(className);
        }catch(ClassNotFoundException e){
            System.out.println("加载数据库驱动失败!");
            e.printStackTrace();
        }
    }
    
    /**创建数据库连接*/
    public Connection getCon(){
        if(con==null){
            try {
                con=DriverManager.getConnection(url,user,password);
            } catch (SQLException e) {
                System.out.println("创建数据库连接失败!");
                con=null;
                e.printStackTrace();
            }           
        }
        return con;
    }
    
    /**
     *@功能:对数据库进行增、删、改、查操作
     *@参数:sql为SQL语句;params为Object数组,里面存储的是为sql表示的SQL语句中"?"占位符赋值的数据 
     */
    public void doPstm(String sql,Object[] params){
        if(sql!=null&&!sql.equals("")){
            if(params==null)
                params=new Object[0];           
            getCon();
            if(con!=null){
                try{        
                    System.out.println(sql);
                    pstm=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
                    for(int i=0;i<params.length;i++){
                        pstm.setObject(i+1,params[i]);
                    }
                    pstm.execute();
                }catch(SQLException e){
                    System.out.println("doPstm()方法出错!");
                    e.printStackTrace();
                }               
            }           
        }
    }
    
    /**
     * @功能:获取调用doPstm()方法执行查询操作后返回的ResultSet结果集
     * @返回值:ResultSet
     * @throws SQLException
     */
    public ResultSet getRs() throws SQLException{
        return pstm.getResultSet();     
    }
    

    [/code]

    点赞 打赏 评论
  • long13131462101 2011-10-15 19:20

    [code="java"]看看我写的

    一定将jdbc的驱动程序放到服务器的类路径里,然后要在数据库里建一个表test,有两个字段比如为test1,test2,可以用下面SQL建
    create table test(test1 varchar(20),test2 varchar(20)
    然后向这个表写入一条测试纪录

    一、jsp连接Oracle8/8i/9i数据库(用thin模式)
    testoracle.jsp如下:
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*"%>


    <%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    String url="jdbc:oracle:thin:@localhost:1521:orcl";
    //orcl为你的数据库的SID
    String user="scott";
    String password="tiger";
    Connection conn= DriverManager.getConnection(url,user,password);
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    String sql="select * from test";
    ResultSet rs=stmt.executeQuery(sql);
    while(rs.next()) {%>
    您的第一个字段内容为:<%=rs.getString(1)%>
    您的第二个字段内容为:<%=rs.getString(2)%>
    <%}%>
    <%out.print("数据库操作成功,恭喜你");%>
    <%rs.close();
    stmt.close();
    conn.close();
    %>

    二、jsp连接Sql Server7.0/2000数据库
    testsqlserver.jsp如下:
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*"%>


    <%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
    //pubs为你的数据库的
    String user="sa";
    String password="";
    Connection conn= DriverManager.getConnection(url,user,password);
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    String sql="select * from test";
    ResultSet rs=stmt.executeQuery(sql);
    while(rs.next()) {%>
    您的第一个字段内容为:<%=rs.getString(1)%>
    您的第二个字段内容为:<%=rs.getString(2)%>
    <%}%>
    <%out.print("数据库操作成功,恭喜你");%>
    <%rs.close();
    stmt.close();
    conn.close();
    %>

    三、jsp连接DB2数据库
    testdb2.jsp如下:
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*"%>


    <%Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
    String url="jdbc:db2://localhost:5000/sample";
    //sample为你的数据库名
    String user="admin";
    String password="";
    Connection conn= DriverManager.getConnection(url,user,password);
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    String sql="select * from test";
    ResultSet rs=stmt.executeQuery(sql);
    while(rs.next()) {%>
    您的第一个字段内容为:<%=rs.getString(1)%>
    您的第二个字段内容为:<%=rs.getString(2)%>
    <%}%>
    <%out.print("数据库操作成功,恭喜你");%>
    <%rs.close();
    stmt.close();
    conn.close();
    %>

    四、jsp连接Informix数据库
    testinformix.jsp如下:
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*"%>


    <%Class.forName("com.informix.jdbc.IfxDriver").newInstance();
    String url =
    "jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myserver;
    user=testuser;password=testpassword";
    //testDB为你的数据库名
    Connection conn= DriverManager.getConnection(url);
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    String sql="select * from test";
    ResultSet rs=stmt.executeQuery(sql);
    while(rs.next()) {%>
    您的第一个字段内容为:<%=rs.getString(1)%>
    您的第二个字段内容为:<%=rs.getString(2)%>
    <%}%>
    <%out.print("数据库操作成功,恭喜你");%>
    <%rs.close();
    stmt.close();
    conn.close();
    %>

    五、jsp连接Sybase数据库
    testmysql.jsp如下:
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*"%>


    <%Class.forName("com.sybase.jdbc.SybDriver").newInstance();
    String url =" jdbc:sybase:Tds:localhost:5007/tsdata";
    //tsdata为你的数据库名
    Properties sysProps = System.getProperties();
    SysProps.put("user","userid");
    SysProps.put("password","user_password");
    Connection conn= DriverManager.getConnection(url, SysProps);
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    String sql="select * from test";
    ResultSet rs=stmt.executeQuery(sql);
    while(rs.next()) {%>
    您的第一个字段内容为:<%=rs.getString(1)%>
    您的第二个字段内容为:<%=rs.getString(2)%>
    <%}%>
    <%out.print("数据库操作成功,恭喜你");%>
    <%rs.close();
    stmt.close();
    conn.close();
    %>

    六、jsp连接MySQL数据库
    testmysql.jsp如下:
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*"%>


    <%Class.forName("org.gjt.mm.mysql.Driver").newInstance();
    String url ="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
    //testDB为你的数据库名
    Connection conn= DriverManager.getConnection(url);
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    String sql="select * from test";
    ResultSet rs=stmt.executeQuery(sql);
    while(rs.next()) {%>
    您的第一个字段内容为:<%=rs.getString(1)%>
    您的第二个字段内容为:<%=rs.getString(2)%>
    <%}%>
    <%out.print("数据库操作成功,恭喜你");%>
    <%rs.close();
    stmt.close();
    conn.close();
    %>

    七、jsp连接PostgreSQL数据库
    testmysql.jsp如下:
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*"%>


    <%Class.forName("org.postgresql.Driver").newInstance();
    String url ="jdbc:postgresql://localhost/soft"
    //soft为你的数据库名
    String user="myuser";
    String password="mypassword";
    Connection conn= DriverManager.getConnection(url,user,password);
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    String sql="select * from test";
    ResultSet rs=stmt.executeQuery(sql);
    while(rs.next()) {%>
    您的第一个字段内容为:<%=rs.getString(1)%>
    您的第二个字段内容为:<%=rs.getString(2)%>
    <%}%>
    <%out.print("数据库操作成功,恭喜你");%>
    <%rs.close();
    stmt.close();
    conn.close();
    %>

    [/code]

    点赞 打赏 评论
  • 稀巴烂 2011-10-16 19:41

    我晕死,像这样的基础的工具类,为什么要放到页面表现层上写呢?

    点赞 打赏 评论
  • AngelAndAngel 2011-10-16 23:47

    ls +10086

    点赞 打赏 评论
  • iteye_8576 2011-10-17 07:24

    不要放在一个类里,加载驱动和数据库连接这些放到连接池中,db操作放到dao层里做,
    dao的代码很多现成的,不要自己写了,apache的Dbutils,Spring的JDBCTemplate,ibatis都行,自己搜索下

    点赞 打赏 评论

相关推荐