日期:2014-05-20  浏览次数:20635 次

这么基础的东西我怎么没弄明白呢,郁闷了,关于构造函数的
package   org.hy.mssql;

import   java.sql.Connection;
import   java.sql.ResultSet;
import   java.sql.SQLException;
import   java.sql.Statement;

public   class   ConnectionDatabaseSimple   {

/**
  *   @param   args
  */
private   static   Connection   con=null;

ConnectionDatabaseSimple(){
con=DbConnection.getConnection();
}

public   static   void   main(String[]   args)   {
//   TODO   Auto-generated   method   stub
StatementSimple();
}
public   static   void   p(Object   o){
System.out.print   (o);
}
public   static   void   StatementSimple(){
Statement   stmt=null;
ResultSet   rs=null;
try{
stmt=con.createStatement();
rs=stmt.executeQuery( "select   *   from   biao ");
while(rs.next()){
int   s=rs.getMetaData().getColumnCount();
for(int   i=1;i <=s;i++){
p(rs.getString(i)+ "   ");
}
System.out.println();
}
}catch(SQLException   e){
e.printStackTrace();
}
}


}

我已经在构造函数里给con进行付值了,
直接用stmt=con.createStatement();
还是不好使,我用stmt=DbConnection.getConnection().createStatement(),程序就可以正常运行了,什么意思呢


------解决方案--------------------
构造方法是构造对象的时候才调用的方法。
你上面都是用的静态的东西,哪里需要构造方法呢?

简单的说,只有new ConnectionDatabaseSimple();这样一句话才会调用ConnectionDatabaseSimple的构造方法,所以,上面的例子里你的构造方法根本没被调用。
如果你想初始化一个类,而不是一个对象,应该使用静态块,比如把上面的
ConnectionDatabaseSimple(){
con=DbConnection.getConnection();
}
改成

static {
con=DbConnection.getConnection();
}