2012-07-01 96 views
0

我一直在嘗試使用以下代碼。如何使用JDBC檢索數據

正在建立連接。但resultSet是空的(非空),而在數據庫中有相同的幾個條目(每個2個字段)。

它不進入while條件。我是JDBC新手,請幫忙!

我的代碼是:

import java.sql.*; 

public class JDBCTest123 
{ 

    public static void main(String[] args) 
    { 
     System.out.println("oracle Connect Example."); 
     Connection conn = null; 
     String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE"; 
     String driver = "oracle.jdbc.driver.OracleDriver"; 
     String userName = "system"; 
     String password = "mumpymamai"; 
     Statement stmt = null; 
     String query = "select * from table1"; 
     try 
     { 
      Class.forName(driver); 
      conn = DriverManager.getConnection(url, userName, password); 
      stmt = conn.createStatement(); 
      System.out.println("Connected to the database"); 
      ResultSet rs = stmt.executeQuery(query); 
      while (rs.next()) 
      { 
       System.out.println(rs.getString(1)); 
       System.out.println(rs.getString(2)); 
      } 
      conn.close(); 
      System.out.println("Disconnected from database"); 
     } catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

,輸出是:

oracle Connect Example. 
Connected to the database 
Disconnected from database 
+0

正確地設置輸出的格式(儘管很明顯在這種情況下,在終端顯示輸出時通常是一種很好的做法)。 –

回答

2

這麼幾個建議。我建議你使用更快更安全的PreparedStatements

PreparedStatement ps = null; 
conn = DriverManager.getConnection(url, userName, password); 
ps = conn.prepareStatement(query); 
ResultSet rs = ps.executeQuery(); 
while (rs.next()) 
{ 
    // do some work 
} 

第二個建議,呼籲close()方法finally塊,因爲應用程序可能會崩潰,然後您的連接不會被關閉。最後阻止將始終被調用的保證。


第三個建議,如果它不工作沒有Exception,可能你有空表。

相關問題