【问题标题】:How to display oracle (10g) query results in JSP?如何在 JSP 中显示 oracle (10g) 查询结果?
【发布时间】:2013-12-11 12:35:09
【问题描述】:

我正在尝试制作一个简单的 JSP sn-p 来对 oracle 数据库执行查询并显示结果。查询可以是选择、删除、更改、更新等任何内容。我需要帮助来制作通用代码以显示查询结果和错误。

这是我目前编写的代码:

<%@ 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. 当我执行“select * from emp”之类的查询时,如何自动显示所有列和行。
  2. 如何检查删除/更新查询是否正常工作。
  3. 如何使用 JSP 查看和更改 oracle 触发器。

【问题讨论】:

    标签: java database oracle jsp


    【解决方案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();
    

    【讨论】:

    • 谢谢,能否请您简单解释一下第三点?示例代码会有很大帮助。
    • 完美。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    相关资源
    最近更新 更多