ORA-01003:没有解析语句

时间:2014-05-26 09:15:46

标签: java oracle servlets

我正在尝试创建一个表,并在同一个程序的同一个表上插入值。创建表并且未完成插入查询。我得到了相同的错误,我改变了我对插入字符串

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    HttpSession session = request.getSession(true);
    Connection conn;
    Statement smt;
    ResultSet rs;
    String ses_id=(String) session.getAttribute("mailid");
    String add=request.getParameter("to_add");
    try
    {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","password");
        smt=conn.createStatement();
        System.out.println("connected");
        try
        {
            rs=smt.executeQuery("create table "+add+"_inbox(sender_id varchar(20), subject varchar(20), message varchar(4000))");
            System.out.println("created a table");
            while(rs.next())
            {

                smt.executeUpdate("insert into "+add+"_inbox(sender_id,subject,message)"+" values('"+ses_id+"','"+request.getParameter("sub")+"','"+request.getParameter("msg")+"')");
                System.out.println("done"); 
            }
        }
        catch (SQLException e) {
            System.out.println("exception");
            // TODO Auto-generated catch block
            e.printStackTrace(); 
        } 

    // TODO Auto-generated method stub
    } catch (ClassNotFoundException | SQLException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }finally{}
}

我使用eclipse作为servlet,使用oracle10g作为db。 数据库已连接, 表已创建, 插入查询未完成。

2 个答案:

答案 0 :(得分:1)

您没有输入while循环,因为rs没有rs.next个值。 你想在表中插入什么?我看到你要插入一行参数来自HttpSessionHttpServletRequest。因此,请删除while(rs.next)循环。

答案 1 :(得分:0)

因为executeQuery总是希望会返回一些内容 因此,您可以直接使用execute方法来创建更新表。