package database;
import java.sql.*;
public class Oracle2 {
String user="scott";
String pwd="tiger";
String url="jdbc:oracle:thin:@192.168.1.100:1521:orcl";
Connection conn=null;
Statement s;
ResultSet rs=null;
public Oracle2()throws SQLException
{
try{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
conn=DriverManager.getConnection(url, user, pwd);
s=conn.createStatement();
}catch(Exception e)
{
e.printStackTrace();
}
}
public Oracle2(String sql)throws SQLException
{
new Oracle2();
this.execute(sql);
}
public void execute(String sql)
{
try {
rs = s.executeQuery(sql);

while (rs.next()) {
System.out.printf("%-5s", rs.getString(1));
System.out.printf("%-10s", rs.getString(2));
System.out.printf("%-10s\n", rs.getString(3)); }

} catch (Exception e) {
e.printStackTrace();
}

}
public void close()
{
try
{
s.close();
conn.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args) 
{
try
{

Oracle2 O2=new Oracle2("select * from dept");

}catch(Exception e)
{
e.printStackTrace();
}

}
}

解决方案 »

  1.   

    什么错啊?
    .newInstance();似乎可以不要.
    没关rs
    main没关connection,多运行几次,然后准备等或重启数据库.个人意见仅供参考
      

  2.   

    把你的错误贴出来看看,没个提示怎么帮你看,代码看起来没有问题。
    不过我觉得在close方法里多加个判断更好。if(s!=null) {
       s.close();
    }
    if(conn!=null){
       conn.close();
    }
      

  3.   

    错误:
    java.lang.NullPointerException
    at database.Oracle2.execute(Oracle2.java:29)
    at database.Oracle2.<init>(Oracle2.java:24)
    at database.Oracle2.main(Oracle2.java:59)
      

  4.   

    有没有把jdbc的jar包放到classpath中?
      

  5.   

    你这个构造方法有问题
     public Oracle2(String sql)throws SQLException
        {
            new Oracle2(); //这里有问题,改成 this();
            this.execute(sql);
        }
    建议:虽然问题可以这样解决,但是代码设计不合理。要么就带参数的构造方法搞定一切,默认构造方法什么都不做,要么只要那个带参数的构造方法。
      

  6.   

    你只在Oracle2()内部对conn、s赋值,这两个变量又不是static的,这个new 一完,他们就空了当然空指针
      

  7.   

    你把变量前面加上static再试。或者如6楼所说改造下你的代码。