import java.sql.*;
class xt{

public static void main(String in[]){


try{
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(ClassNotFoundException cnfe){
System.out.println("can not found!");
}

try{
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@192.168.5.160:1521:orcl","system","manager");

Statement stat=con.createStatement();

//ResultSet res=stat.executeQuery("select * from students;");   //#

//res.next();
//System.out.println(res.getString(1));

}catch(SQLException sqle){
System.out.println("sql error");
}

}
}
以上代码执行未报任何异常.
但只要执行注释为#的那句,就会打印"sql error",这么看来,连接貌似没问题,为何一执行sql语句就报错呢?请各位帮忙看看,谢谢!

解决方案 »

  1.   


    看代码没什么错吧. 数据库服务启动了么?表存在么? 前后System打印下看看 哪句扔的异常.
      

  2.   


    //ResultSet res=stat.executeQuery("select * from students;");   
    //基本上看不出来问题,我一般是这样用 不要结尾那个 ";"
    ResultSet res=stat.executeQuery("select * from students");
    //试试 不行 那就等高手了  
      

  3.   

     //ResultSet res=stat.executeQuery("select * from students;");   //#
    1.sql语句中的分号去掉  (可能是对的,没写过带分号的sql)
    2.sqlplus 执行 看看是否成功(orcl库中是否存在students这张表。
    3.System.out.println("sqlerror")
    换成 e.printStackTrace(); 看异常的详细信息
      

  4.   

    e.printStackTrace();
    你的catch中改一下,看下详细异常,是sql语句有错还是表没找到
      

  5.   


    //用这个方法把 String打印贴出来出来看看是什么
    getSQLState
    public String getSQLState()获取此 SQLException 对象的 SQLState。 返回:
    SQLState 值
      

  6.   


    //Tip//某某大牛说过 Java+OrcalDB是SQL尽量用大写这样可以减轻oracl解析的负担,提高效率