【问题标题】:jdbc: front end java, back end Oracle 10g express editionjdbc:前端java,后端Oracle 10g express版
【发布时间】:2019-11-19 05:02:58
【问题描述】:

我想寻求帮助。我无法将我的 java 连接到 oracle 10g express 版本。我已经尝试解决这个问题大约 3 天了。我已经将我的 javac 和 java 降级到 1.8,因为它是 youtube 上关于如何解决这个问题的唯一可用教程,但它仍然不起作用。我的程序确实编译了,当我尝试运行它时,我的终端显示“java.sql.SQLException: ORA-00911: invalid character”。我使用的是 java.swing 而不是 javafx。请帮助我,我是新手,谢谢!

import java.sql.*;  
class OracleCon{  
public static void main(String args[]){  
try{  

Class.forName("oracle.jdbc.driver.OracleDriver");  


Connection con=DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:xe","customer","customer");  


Statement stmt=con.createStatement();  


ResultSet rs=stmt.executeQuery("select * from customer;");  
while(rs.next())  
System.out.println(rs.getInt(1)+"  "+rs.getString(2)+"  "+rs.getString(3));  


con.close();  

}catch(Exception e){ System.out.println(e);}  

}  
}  

【问题讨论】:

  • 显示代码怎么样。
  • 更多信息将System.out.println(e);更改为e.printStackTrace() - 实际选择您想要的列而不是*会更安全
  • 我试图改变它发生了这种情况:java.sql.SQLException: Invalid column index at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208) at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:379) at OracleCon.main(OracleCon.java:17)
  • 是的,实际选择列可能更好。好像没有三列
  • 我尝试了“从客户中选择名称”而不是“从客户中选择 *”。当我运行它时它显示java.sql.SQLException: Fail to convert to internal representation

标签: java oracle10g


【解决方案1】:

你能不能试试这个

ResultSet rs=stmt.executeQuery("select * from customer");  
while(rs.next())  
System.out.println(rs.getInt(1)+"  "+rs.getString("2")+"  ");  
//1  I removed from your code `rs.getString(3)` and `rs.getString(2)`
//2  You can add string as rs.getString("3"), `rs.getString("2")` like this 
//3 my suggestion is you first remove rs.getString(3) , rs.getString("2") and run 

这种异常在包含特殊字符时会抛出

错误 java.sql.SQLException: ORA-00911: 无效字符

这种错误会导致 - 最常见的误解是列索引

Java.sql.SQLException:列索引无效

【讨论】:

  • 成功了!非常感谢你!但我能问你这是怎么发生的吗?我对Java真的很陌生。在过去的两周里,我一直在自己研究这一切。请赐教谢谢!
  • 亲爱的,我再次编辑了我的答案 - 这将有助于理解你,我会附上一些链接来理解 - javarevisited.blogspot.com/2012/01/…
  • 非常感谢!这对我帮助很大!
  • 有人给我投了反对票,我不明白为什么,
  • 我也不懂,但你的建议对我帮助很大。无论如何,谢谢!
【解决方案2】:

请去掉sql中的分号:

select * from customer" instead of "select * from customer;"

【讨论】:

  • 我的编译器说:java.sql.SQLException: Invalid column index
  • 客户表中有哪些列,它们的数据类型是什么?
  • 它只有两个实体
猜你喜欢
  • 1970-01-01
  • 2011-07-13
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 2020-12-03
  • 2018-06-12
相关资源
最近更新 更多