JSP с ошибкой создания таблицы ORACLE

Я разрабатываю приложение на основе сети JSP, которое должно работать с OJDBC. Здесь имя ТАБЛИЦЫ будет дано пользователями в ФОРМЕ, а создание таблицы будет обработано через файл .jsp, связанный с OJDBC. НО я получаю следующую ошибку на CREATETB.jsp

введите отчет об исключении

сообщение Произошло исключение при обработке JSP-страницы /createdb.jsp в строке 12

описание Сервер обнаружил внутреннюю ошибку, которая не позволила ему выполнить этот запрос. org.apache.jasper.JasperException: произошло исключение при обработке JSP-страницы /createtb.jsp в строке 12.

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");
    }

%>

person Sarwar Alam    schedule 21.12.2015    source источник


Ответы (1)


Взгляните на: введите здесь описание ссылки. Чтобы создать таблицу, вы нельзя использовать:

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

потому что это для избранных запросов. Вам скорее нужно использовать:

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

Надеюсь это поможет

person ZeusNet    schedule 21.12.2015
comment
ZeusNet благодарит, НО на этот раз строка ошибки 18 stmt.executeUpdate(sql); - person Sarwar Alam; 21.12.2015
comment
Не забудьте удалить ; в конце строки CREATE TABLE. Кроме того, создайте блоки try/catch и распечатайте исключения StackTrace, это поможет вам увидеть, что пошло не так. - person Timekiller; 21.12.2015
comment
Как упомянул timekiller, фактическая трассировка стека была бы полезна для решения вашей проблемы. - person ZeusNet; 21.12.2015
comment
Спасибо @ZeusNet и Timekiller. проблема решена обоими вашими ответами :) - person Sarwar Alam; 21.12.2015