2015-06-19 77 views
0

顯示從Oracle數據庫記錄我想在顯示從甲骨文數據庫中的記錄的Java使用選擇關鍵字,但它不工作。當我運行程序時,它會顯示SQL命令,但不會顯示我想要的結果。如何使用選擇關鍵字

我的代碼是這樣的:

static void modify() 
{ 
    System.out.println("Enter employee ID"); 
    empid=sc.nextInt(); 
    try{ 
     con=Connection1.getConnection(); 
     stmt=con.createStatement(); 
     String d="select * from emp where empid='"+empid+"'"; 
     rs=stmt.executeQuery(d); 
     System.out.println(""+d); 
    } 
    catch(SQLException e) 
    { 
    e.printStackTrace(); 
    }  
} 

當我運行這個結果顯示,而不是記錄從數據庫的應用程序:

select * from emp where empid='14' 
+2

你確定這是所有的代碼嗎?我什至不知道它將在哪裏打印出select語句......我希望它是toString爲stmt對象顯示的任何東西....您需要迭代結果集並打印它給您的內容顯示記錄。 – BlakeP

+5

您正在打印SQL語句。但是你永遠不會從'ResultSet'對象獲取數據或顯示該數據。所以你不會看到數據庫中的任何信息。 –

+0

在您的結果集中,可以通過索引訪問表中的字段。 – MaxZoom

回答

1

問題是,你只是打印你的結果不是結果本身的名稱。

我已經改變了如下代碼,

static void modify() 
    { 
    System.out.println("Enter employee ID"); 
     empid=sc.nextInt(); 
     try{ 
      con=Connection1.getConnection(); 
      stmt=con.createStatement(); 
      String d="select * from emp where empid='"+empid+"'"; 
      rs=stmt.executeQuery(d); 

    while(rs.next()){ 

    //Getting column value from record by giving column no 
       System.out.println(rs.getString(1)); //line 1 
    //Getting column value from record by giving column name, 
       System.out.println(rs.getString("empid"));// line 2 
    } 
     } 
     catch(SQLException e) 
     { 
      e.printStackTrace(); 
     } 

    } 

請注意,上面的代碼(1號線)將打印您的每個記錄的第一列(從數據庫返回),這裏的秩序返回的列不保證

如果您想獲得特定列,那麼您可以在resultSet (第2行)的getString方法中指定列名作爲參數。

您必須使用適當的方法來獲取值,例如,如果第2列中的數據類型爲DB,則爲INTEGER,那麼您必須使用rs.getInt(2)

在你的代碼,

System.out.println(""+rs); 

在Java中,當你調用的println(Object)方法在System.out中,這將調用將String.valueOf(Object)方法是再次將調用toString()方法,這將返回對象的字符串表示,這裏只是您傳遞的查詢,而不是記錄。

0

要打印的StatementtoString()表示。相反,您應該執行語句(您所做的),並從ResultSet獲取相關字符串。

坦率地說,RestulSet不給予最舒適的方式來遍歷其列,但它是可行的:

int colCount = rs.getMetaData().getColumnCount() 
List<Object> columnValues = new ArrayList<>(colCount); 

// Move to the first row 
// If your query returns more than one row, 
// you'd probably want to iterate over all of them 
rs.next(); 

// Iterate the columns: 
for (int i = 1; i <= colCount; ++i) { 
    list.add(rs.getObject(i)); 
} 
System.out.println ("Record: " + list);