#java
#java
Вопрос:
Я пытаюсь получить имя таблицы из ResultSetMetaData следующим кодом
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
conn = DriverManager.getConnection(url,"releaseUN", "releasepw");
Statement stmt = conn.createStatement();
String qry = "";
qry = " SELECT * FROM MyTable ";
ResultSet rset = stmt.executeQuery(qry);
ResultSetMetaData md = rset.getMetaData();
int col = md.getColumnCount();
for (int i = 1; i <= col; i ) {
System.out.println("getTableName " md.getTableName(i));
}
Но он возвращает пустую строку
Я использовал ojdbc14.jar для подключения к базе данных Oracle с помощью подключения jdbc
На самом деле мне нужно имя таблицы для каждого выбранного столбца в данном запросе.
Комментарии:
1. Не могли бы вы показать нам немного больше из вашего кода? Запрос на подключение и так далее?
2. Вы уверены, что
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
это правильно! Я думаюorcl
, его следует заменить на XE.3. да, шекхар, orcl верен, когда я использую xe, он выдает ошибку java.sql.SQLException: слушатель отказался от соединения
4. вы уверены, что ваше соединение устанавливается?? попробуйте создать исключение, окружив его try catch
5. Да, сэр, соединение устанавливается, я могу распечатать данные столбца с помощью этого кода, пока (rset.next()) { System.out.println(rset.getString(1)); }
Ответ №1:
В документации ResultSetMetaData говорится, что она возвращает пустую, если это не применимо.
String getTableName(int column)
throws SQLException
Gets the designated column's table name.
Parameters:column - the first column is 1,
the second is 2, ...
Returns:table name or "" if not applicable
Throws: SQLException - if a database access error occurs
Комментарии:
1. точно, Дженс, его перенастройка пустой (пустой строки) для меня, некоторые ребята могут получить имя таблицы из того же метода, но для моей стороны это не работает, какое-либо другое решение, Дженс?
2. @Kamal В документации ничего не говорится о том, что означает «неприменимо». Возможно, вам нужны специальные разрешения или это зависит от СУБД.
3. @Kamal или посмотрите здесь «К сожалению, getTableName не реализован драйвером. Если вы подумаете об этом, это не очень просто реализовать, учитывая возможную сложность sql-запроса. »
4. Я прошел по ссылке, которую вы дали, и они сказали, что для этого метода нет реализации, в любом случае ценю вашу помощь, Дженс