【问题标题】:JSP with ORACLE table creation errorJSP 与 ORACLE 表创建错误
【发布时间】:2016-03-27 09:23:45
【问题描述】:

我正在开发一个基于 JSP web 的应用程序,它应该与 OJDBC 一起使用。 这里 TABLE 名称将由用户在 FORM 中给出,并且表的创建将通过与 OJDBC 链接的 .jsp 文件进行处理。 但是我在 CREATETB.jsp 上收到以下错误

输入异常报告

消息在第 12 行处理 JSP 页面 /createdb.jsp 时发生异常

描述 服务器遇到了一个内部错误,导致它无法完成这个请求。 org.apache.jasper.JasperException:在第 12 行处理 JSP 页面 /createtb.jsp 时发生异常

Statement st= con.createStatement(); 
ResultSet rs;
rs = st.executeQuery("CREATE TABLE " + TbName  //LINE NO 12
+ "("
+ "A_IDD SMALLINT PRIMARY KEY,"
+ "A_LASTT VARCHAR(25),"

我的 index.jsp

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Example</title>
    </head>
    <body>
        <form method="post" action="createdb.jsp">
            <center>
            <table border="1" width="30%" cellpadding="3">
                <thead>
                    <tr>
                        <th colspan="2">Create Table Here</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>NEW TABLE NAME</td>
                        <td><input type="text" name="TbName"/></td>
                    </tr>
                    <tr>

                      <td><input type="reset" value="Reset" /></td>
                      <td><input type="submit" value="Create" /></td>
                    </tr>
                </tbody>
            </table>
            </center>
        </form>
    </body>
</html>

createtb.jsp

<%@ page import ="java.sql.*" %>
<%@ page import ="java.sql.Connection" %>
<%@ page import ="java.sql.DriverManager" %>
<%
    String TbName = request.getParameter("TbName");
    Class.forName("oracle.jdbc.OracleDriver");
    Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl",
            "paku", "paku");

    Statement st= con.createStatement(); 
    ResultSet rs;
    rs = st.executeQuery("CREATE TABLE " + TbName
            + "("
            + "A_IDD SMALLINT PRIMARY KEY,"
            + "A_LASTT VARCHAR(25),"
            + "A_FF VARCHAR(20)"
            + ");");
    if (rs.next()) {
        out.println("TABLE CREATED ");
    } else {
        out.println("ERROR");
    }

%>

【问题讨论】:

    标签: java oracle jsp ojdbc


    【解决方案1】:

    看看:enter link description here 要创建表,您不能使用:

    Statement st= con.createStatement(); 
    ResultSet rs;
    rs = st.executeQuery(sql);
    

    因为这是针对选择查询的。 你宁愿使用:

    stmt = conn.createStatement();
    String sql = "CREATE TABLE "+table_name+" (...)"; 
    stmt.executeUpdate(sql);
    

    希望对你有帮助

    【讨论】:

    • ZeusNet 感谢但这次错误行 18 stmt.executeUpdate(sql);
    • 不要忘记从CREATE TABLE 字符串的末尾删除;。此外,创建 try/catch 块并打印异常 StackTrace,它会帮助您查看问题所在。
    • 正如 timekiller 所说,实际的堆栈跟踪将有助于解决您的问题
    • 谢谢@ZeusNet 和 Timekiller。您的两个答案都解决了问题:)
    猜你喜欢
    • 1970-01-01
    • 2015-12-05
    • 2011-03-08
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 2014-12-29
    相关资源
    最近更新 更多