2013-12-10 49 views
1

我想做一個簡單的JSP片段來執行對oracle數據庫的查詢並顯示結果。查詢可以是任何選擇,刪除,更改,更新等。我需要幫助製作一個通用代碼來顯示查詢結果和錯誤。如何在JSP中顯示oracle(10g)查詢結果?

這是我迄今編碼:

<%@ page language="java" import="java.sql.*" %> 
<%@page import="oracle.jdbc.driver.*" %> 
<%@page import="oracle.sql.*;" %> 

<% 

Connection conn = null; 
Statement stmt = null; 
ResultSet rset = null; 

try { 
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); 
    conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.22:1521:orcl", 
             "test", "testpass"); 
    stmt = conn.createStatement(); 

    String que = request.getParameter("q"); 
    rset = stmt.executeQuery (que); 

} catch (SQLException e) { 
    out.println("<P> SQL error: <PRE> " + e + " </PRE> </P>\n"); 
} finally { 
    if (rset!= null) rset.close(); 
    if (stmt!= null) stmt.close(); 
    if (conn!= null) conn.close(); 
} 

%> 

我的問題是:

  1. 怎麼能當我執行類似的查詢「,選擇我自動顯示所有列和行* FROM EMP 」。
  2. 如何檢查刪除/更新查詢是否正常工作。
  3. 如何使用JSP查看和更改Oracle觸發器。

回答

1

1.使用ResuletSetMetaData

Class.forName("oracle.jdbc.driver.OracleDriver"); 
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/XE","scott","tiger"); 
Statement stmt = conn.createStatement(); 
ResultSet rs = stmt.executeQuery("SELECT * FROM emp"); 
if(rs.next()){ 
    // print column names 
    ResultSetMetaData rsmd = rs.getMetaData(); 
    int columnCount = rsmd.getColumnCount(); 
    for(int i=1; i<= columnCount; i++) 
     System.out.print(rsmd.getColumnName(i) + "\t"); 
    System.out.println(); 
    // print rows 
    do { 
     for(int i=1; i<=columnCount; i++) 
      System.out.print(rs.getString(i) + "\t"); 
     System.out.println(); 
    } while(rs.next()); 
} 
conn.close(); 

2.Statement的方法executeUpdate()返回受影響的行爲INT。

3(a)。創建觸發器

Class.forName("oracle.jdbc.driver.OracleDriver"); 
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/XE","scott","tiger"); 
Statement stmt = conn.createStatement(); 
stmt.executeUpdate("CREATE OR REPLACE TRIGGER yourtrigger BEFORE DELETE ON emp FOR EACH ROW BEGIN dbms_output.put_line('row deleted..'); END;");   
conn.close(); 

3(b)。查看觸發器

Class.forName("oracle.jdbc.driver.OracleDriver"); 
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/XE","scott","tiger"); 
Statement stmt = conn.createStatement(); 
ResultSet rs = stmt.executeQuery("select text from user_source where name = 'YOURTRIGGER'"); 
if(rs.next()) 
    System.out.println(rs.getString(1)); 
conn.close(); 
+0

謝謝,請您簡單介紹一下第三點?示例代碼將非常有幫助。 – ITFreak

+0

完美。非常感謝。 – ITFreak