ITFreak
ITFreak

Reputation: 93

How to display oracle (10g) query results in JSP?

I am trying to make a simple JSP snippet to perform queries on an oracle database and display results. Query can be anything like select, delete, alter, update, etc. I need help with making a general code to display query results and errors.

Here is what I have coded so far:

<%@ 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();
}

%>

My questions are:

  1. How can I automatically display all columns and rows when I execute a query like "select * from emp".
  2. How to check if a delete/update query has worked correctly or not.
  3. How to view and alter oracle triggers using JSP.

Upvotes: 1

Views: 2838

Answers (1)

laksys
laksys

Reputation: 3237

1.Use 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's executeUpdate() method return affected rows as int.

3 (a). Create trigger

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). View trigger

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();

Upvotes: 1

Related Questions