2016-04-08 3 views
1

Использование стандартного JDBC-кода для соединения JAVA-ORACLE, однако не работает.JAVA-JDBC- ORACLE Проблемы подключения

Это может быть задано ранее, но я не могу отлаживать его сам, поэтому прошу здесь. Запрос о помощи.

Код:

import java.sql.*; 
class OracleCon { 
    public static void main(String args[]) { 
    try { 
     // step1 load the driver class 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 

     // step2 create the connection object 
     Connection con = DriverManager.getConnection(
       "jdbc:oracle:thin:@localhost:1521:xe", "system", 
       "nikhil.nik"); 

     /* 
     * Hostname: Host system for the Oracle database. For your Express 
     * Edition database, the hostname is localhost. Port: Listener port. 
     * The default is 1521. SID: Database name. The default for Express 
     * Edition is xe. 
     */ 

     // step3 create the statement object 
     Statement stmt = con.createStatement(); 

     // step4 execute query 
     ResultSet rs = stmt.executeQuery("SELECT TEST_NAME FROM TEST1"); 
     // System.out.println(rs); 

     while (rs.next()) 
      System.out.println(rs.getInt(1) + " " + rs.getString(2) + " " 
        + rs.getString(3)); 

     // step5 close the connection object 
     con.close(); 

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

} 

}

StackTrace:

java.sql.SQLException: Fail to convert to internal representation 
    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.CharCommonAccessor.getInt(CharCommonAccessor.java:132) 
    at oracle.jdbc.driver.OracleResultSetImpl.getInt(OracleResultSetImpl.java:521) 
    at dbPrograms.OracleCon.main(OracleCon.java:31) 
+0

Вы выбираете один столбец, но в результате получаете три столбца. – wero

+0

Показать полный стек с помощью 'e.printStackTrace();'. Ваш путь теряет всю важную информацию в исключении. – Kayaman

+0

проводка StackTrace: java.sql.SQLException: Не удалось преобразовать внутреннее представление \t на oracle.jdbc.driver.DatabaseError.throwSqlException (DatabaseError.java:112) \t в oracle.jdbc.driver.DatabaseError.throwSqlException (DatabaseError.java:146) \t в oracle.jdbc.driver.DatabaseError.throwSqlException (DatabaseError.java:208) \t в oracle.jdbc.driver.CharCommonAccessor.getInt (CharCommonAccessor.java:132) \t на оракула. jdbc.driver.OracleResultSetImpl.getInt (OracleResultSetImpl.java:521) \t в dbPrograms.OracleCon.main (OracleCon.java:31) – nik

ответ

2

Вы выбрали столбец TEST_NAME и экстрагируют его значения, как int. Эта операция завершилась неудачно, так как Oracle не может соответствующим образом преобразовать значения. Используйте метод ResultSet, подходящий для типа столбца.

Также вы выбираете один столбец и получаете доступ к трем столбцам в ResultSet, поэтому вы можете настроить команду выбора.

+0

Hi Wero, один больше сомнения. Здесь, в коде, я не выбираю свою базу данных «Emloyee». Итак, как выбрать базу данных. Предположим, если у меня есть одна и та же таблица в двух базах данных, то как получить значения. «Xe» - это идентификатор SID. – nik

+0

@ НихилКумар не эксперт в оракуле. Угадайте, что вы указываете базу данных в URL-адресе подключения, как вы уже делали. http://stackoverflow.com/questions/4832056/java-jdbc-how-to-connect-to-oracle-using-service-name-instead-of-sid может помочь. – wero

Смежные вопросы