Я пытаюсь выполнить этот проект, но у него есть серьезная проблема. Я создал таблицу test2 с атрибутом cid. Я добавил пользователя в ИДС, используя эти командной строки в SQL командной строки:Соединение JDBC подключено, но нет результата запроса к набору результатов
create table test2(cid varchar(20));
insert into test2 values('hello');
select cid from test2;
Тогда я получаю результат, как
CID
-----------------------
HELLO
Мой вопрос заключается в том, что, когда я пытался использовать JDBC с eclipe на сервер, я получаю rs.next() как false (rs is resultset). ясно, что у меня есть «привет» внутри таблицы test2. Вот мой код, если кто-нибудь может помочь мне с этим, я был бы признателен:
public boolean connect(String username, String password)
{
String connectURL = "jdbc:oracle:thin:@dbhost.xxx.xx.xxx.ca:1522:ug";
try
{
con = DriverManager.getConnection(connectURL,username,password);
System.out.println("\nConnected to Oracle!");
ResultSet rs;
try
{
Statement stmt = con.createStatement();
rs = stmt.executeQuery("SELECT cid FROM test2");
System.out.println("here");
while(rs.next())
{
System.out.println("there");
System.out.println("cid isssssssssss: " + rs.getString("cid"));
}
System.out.println("after here");
stmt.close();
}
catch (SQLException ex)
{
System.out.print("Message: " + ex.getMessage());
}
try {
con.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return true;
}
catch (SQLException ex)
{
System.out.println("Message: " + ex.getMessage());
return false;
}
}
Подключение есть, потому что, когда я меняю ИДС в чем-то иначе SQLException дал мне сообщение об ошибке. Таким образом, он подключается, но не получает никакого запроса с сервера.
rs = stmt.executeQuery("SELECT something FROM test2");
Connected to Oracle!
Message: ORA-00904: "SOMETHING": invalid identifier
озадачивает меня. Еще раз спасибо.
Обязательно спросите: Вы сделали свою вставку? – rgettman
Я добавил вставку через командную строку sql, и когда я делаю выбор * из командной строки, все данные вернулись в порядке. Но если я делаю выбор cid из test2 внутри eclipse, он ничего мне не дает (rs.next() == false) – user2185801
Как предполагает rgettman, наиболее вероятным объяснением является то, что 'COMMIT' не был выпущен в транзакции, которая сделал ИНСЕРТ. (Мы не видим, чтобы какой-либо COMMIT выполнялся.) Oracle предотвращает просмотр этой строки любыми другими сеансами до тех пор, пока изменение не будет выполнено, но сеанс, который сделал INSERT, «увидит» свои собственные незафиксированные изменения. – spencer7593