at oracle.jdbc.driver.OracleSql.main(OracleSql.java:1714),PLSQL DEVELOPER执行正常

kb5706 2012-02-01 04:35:14
非常菜的小菜鸟一枚
自己写了个简单的jdbc做练习
出现了以下错误
java.lang.ArrayIndexOutOfBoundsException: 0
at oracle.jdbc.driver.OracleSql.main(OracleSql.java:1714)

同样的语句在PLSQL DEVELOPER里执行正常,能够得到结果


package com;

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

public class Jdbc1 {
public void doSelect(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String url = "jdbc.oracle:thin:@localhost:1521:DATABASE";

try{
Connection conn= DriverManager.getConnection(url, "hr", "hr");

if(conn!=null){
System.out.println("连接成功");


String selectSql="SELECT employee_id,"+
"first_name,"+
"phone_number"+
"FROM employees;";
System.out.println(selectSql);

Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(selectSql);

while(rs.next()){
System.out.println("id"+rs.getInt("employee_id")+",");
System.out.println("name"+rs.getString("first_name"+","));
System.out.println("number"+rs.getString("phone_number"));
}

rs.close();
st.close();
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}

}



}



package start;
import com.Jdbc1;


public class Start1 {

/**
* @param args
*/
public static void main(String[] args) {
Jdbc1 jd= new Jdbc1();
jd.doSelect();

}

}
请求各位大侠帮助!




...全文
183 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
MiceRice 2012-02-01
  • 打赏
  • 举报
回复
那你这个程序,简直就是没执行嘛,你咋能确认这个程序被正确启动啦?
kb5706 2012-02-01
  • 打赏
  • 举报
回复
结果仍然是这两行……[Quote=引用 10 楼 ldh911 的回复:]

也许吧,楼主,麻烦你,把这个语句修改下:
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

改为:
try {
……
[/Quote]
MiceRice 2012-02-01
  • 打赏
  • 举报
回复
也许吧,楼主,麻烦你,把这个语句修改下:
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

改为:
try {
System.out.println("寻找OracleDriver");
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("成功找到OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

然后说下,你控制台能看到啥信息?
kb5706 2012-02-01
  • 打赏
  • 举报
回复
没有,除了那两行错误,控制台上没有任何显示,所以连接数据库都没有成功呗?就是连接数据库的地方出问题了??[Quote=引用 8 楼 ldh911 的回复:]

我很好奇,你的控制台上,有显示“连接成功”这句话么?
[/Quote]
MiceRice 2012-02-01
  • 打赏
  • 举报
回复
我很好奇,你的控制台上,有显示“连接成功”这句话么?
kb5706 2012-02-01
  • 打赏
  • 举报
回复
改成hasnext的话,myeclipse会提示 The method hasNext() is undefined for the type ResultSet[Quote=引用 5 楼 aqqbjlgu 的回复:]

while(rs.next())改成"while(rs.hasNext())"
[/Quote]
MiceRice 2012-02-01
  • 打赏
  • 举报
回复
如果是只有这两行的话。。。似乎运行的根本就不是你写的这个类啊?!

你这个类的名字应该是: start.Start1
aqqbjlgu 2012-02-01
  • 打赏
  • 举报
回复
while(rs.next())改成"while(rs.hasNext())"
kb5706 2012-02-01
  • 打赏
  • 举报
回复
对不起^我实在是太菜了,怎么查看错误堆栈??
我运行之后 ,控制台报错这又这两行

java.lang.ArrayIndexOutOfBoundsException: 0
at oracle.jdbc.driver.OracleSql.main(OracleSql.java:1714)

[Quote=引用 3 楼 ldh911 的回复:]

没有完整的错误堆栈么?里面就有,找到行号,然后把对应行贴出来就知道啦。

java.lang.ArrayIndexOutOfBoundsException: 0
at oracle.jdbc.driver.OracleSql.main(OracleSql.java:1714) 括号里面的就是行号了,关键是找到你写的java文件的那行信息。
[/Quote]
MiceRice 2012-02-01
  • 打赏
  • 举报
回复
没有完整的错误堆栈么?里面就有,找到行号,然后把对应行贴出来就知道啦。

java.lang.ArrayIndexOutOfBoundsException: 0
at oracle.jdbc.driver.OracleSql.main(OracleSql.java:1714) 括号里面的就是行号了,关键是找到你写的java文件的那行信息。
kb5706 2012-02-01
  • 打赏
  • 举报
回复
呃^^怎么看错误从哪一行代码引发的???[Quote=引用 1 楼 ldh911 的回复:]

跟SQL语法啥的应该没关系,不过SQL结尾你多了个“;”。错误是从你哪一行代码所引发的?
[/Quote]
MiceRice 2012-02-01
  • 打赏
  • 举报
回复
跟SQL语法啥的应该没关系,不过SQL结尾你多了个“;”。错误是从你哪一行代码所引发的?

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧