这么基础的东西我怎么没弄明白呢,郁闷了,关于构造函数的
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();
}