可以将对数据库的操作写入静态方法吗?(连接的获得是从数据库连接池中取得)
比如:
public static String[] getInfo()
{
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
String [] test = new String[2];
String Sql = "select username,password from users";
try{
conn = Dbpool.getConnection();
stmt = conn.prepareStatement(Sql);
rs = stmt.executeQuery();
while(rs.next()){
test[0] = rs.getInt(1);
test[1] = rs.getInt(2);
}
rs.close();
stmt.close();
conn.close();
}
catch(SQLException ex){}
.......
return test;
}这样涉及到数据库操作的可以写成static方法吗(涉及到连接conn释放的问题,不太明白)?
这个方法何时被执行?是整个web应用启动的时候还是调用他的时候?谢谢

解决方案 »

  1.   

    借地方一用  不知道我怎么不能提问
    public class HelloWorldApp { //an application public static void main (String args[ ]){ System.out.println("Hello World!"); } } 
    运行 javac  a.java 时出错 求助
    pubulic class
            ^
      

  2.   

    to:william_zhao(小乖) 你的class是public的,所以你必须javac  HelloWorldApp
      

  3.   

    谢谢啊。是调用这个static方法的时候才被执行吗?
    我用conn.close()的话连接被放回连接池了?
      

  4.   

    to:hcom(迷失在爪哇世界中)
     解决了 万分感谢
    还有一个问题怎么我不能自己发贴提问 是不是有什么规定要 多少分才可以发贴?
      

  5.   

    to: william_zhao(小乖)
    应该没有什么规定。
    你提问的时候必须到小类中提问,在大类中是看不到提问按钮的。
    比如:大类之的是JAVA技术社区,你必须点他里边的 J2SE / 基础类 或者别的小类才能提问。
      

  6.   

    to: william_zhao(小乖)
    刚才好像说错了。...你的calss是public的所以,你保存的时候必须起同样的名字,也就是必须存为HelloWorldApp.java编译执行的时候当然要用HelloWorldApp了
      

  7.   

    Java应用的运行环境可分为两种
    受管理的环境:由容器负责管理各种共享资源(如线程池和数据库连接池),以及
    管理事务和安全.一些J2EE 应用服务器,如JBoss,WebLogic,WebSphere提供了
    符合J2EE规范的受管理环境.
    不受管理环境:由应用本身负责数据库连接,定义事务边界以及管理安全.有些
    Servlet容器如Tomcat 可以管理数据库连接池,但是Servlet容器不会管理事务,
    因此Tomcat提供的仍然是不受管理的运行环境.
    数据库连接池的基本实现原理是:
    事先建立一定数量的数据库连接,
    这些连接存放在连接池中,当Java应用执行一个数据库事务时,
    只需从连接池中去出空闲状态的数据库连接;当Java应用执行完
    事务,再将数据库连接放回连接池.在不受管理的环境当中,Java应用自身负责构造特定的连接池实例,
    然后访问这个连接池的API,从连接池当中获得数据库连接.....既然听楼主说你的应用是个Web应用,那么小点来说至少有个Tomcat做Servlet容器,
    大点来说你有个WebLogic做应用服务器,不管Tomcat还是Weblogic,
    都应该由他们来构造数据源,并将数据源发布为JNDI资源.(虽然Tomcat不能管理事务,
    但管理数据库连接还是可以的.)
    然后Java通过JNDI API 的javax.naming.Context接口来获得这个数据源的引用
    Context ctx=new InitialContext();
    DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/SAMPLEDB");
    Connection conn=ds.getConnection(); 就ok了,你可以放心用他了。
    其中"jdbc/SAMPLEDB"就是个jndi
    因此我觉得不需要你去关心Connection什么时候被释放.
      

  8.   

    to william_zhao(小乖) ( ) 信誉:100 错误信息是说:只是public 拼错了
    其它都是瞎说。pubulic class
       ~    ^
      

  9.   

    建议楼主看看这篇文章:http://www.graphics.net.cn/article/java/java_static.asp