为了使用数据库的连接池,我尝试写了一下代码,功能很简单,就是获取,然后断开。但是代码出现问题,老是说:
无法从静态上下文中引用非静态 方法close(),请各位大大指点一下我这个新手,谢谢。
以下代码两个部分,一个是我的java语句,一个是我用来测试的jsp。
只要运行到  <%
ping.tool.DBConn.close();
%>
,马上出现错误提示,请各位大大指导,再次谢过了。这个问题困扰了我一个5。1假期了,郁闷。一、  java语句
package ping.tool;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;public class DBConn {
  private Connection con;
  private Statement stmt;
  private ResultSet rs;
  private PreparedStatement pstmt;
  public static  int error = 0;  public static synchronized Connection getDBConn() throws Exception{
    Context ctx;
    DataSource ds;
    try
    {
      ctx = new InitialContext();
      ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mingri" );
      System.err.println();
      System.err.println("数据联接"+(++error));
      return ds.getConnection();
    }
    catch( SQLException e)
    { System.out.print(e);
      throw e;
    }
    catch(NamingException e)
    {
      System.out.print(e);
      throw e;
    }
  }
  public  void  close()
  {
    try {
      con = this.getDBConn();
    }
    catch (Exception ex1) {
    }    try {
      con.close();
      System.err.println("关闭成功");
    }
    catch (SQLException ex) {
    }
  }}二、测试jsp<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
testConn1
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP   hhhhhhhh
<br>
开始获取联接
<br>
</h1>
<%
ping.tool.DBConn.getDBConn();
%>
<br>
开始测试释放联接

<%
ping.tool.DBConn.close();
%><br>
释放完毕
<br>
</body>
</html>

解决方案 »

  1.   


    public  static void  close() 
      { 
        try { 
          con = getDBConn(); 
        } 
        catch (Exception ex1) { 
        }     try { 
          con.close(); 
          System.err.println("关闭成功"); 
        } 
        catch (SQLException ex) { 
        } 
      } 
      

  2.   

    你这代码错误太多了。con也要声明为static的。
      

  3.   

    我尝试把close修改成static但是没有用处。
    不知道有人写过数据连接池的连接和释放么?
    有的话show一下看看。
      

  4.   

    所有的方法和变量都必须是static,这样才不会错。
      

  5.   

    谢谢luojianchengdd,
    能说的详细点么?
    除了close 本身修改为 static 以及 con =this.getDBConn();之外
    还有什么不对的地方?
      

  6.   

    关键点在这个:无法从静态上下文中引用非静态 方法close()!
    好好看下基础,特别是static的用法!