【问题标题】:Inserting data into hsqldb using DAO pattern使用 DAO 模式将数据插入 hsqldb
【发布时间】:2014-12-26 19:57:34
【问题描述】:

您好,我是 Java Web 开发的新手,我正在尝试使用数据访问对象通过表单将数据传递到数据库中。

这是我迄今为止创建的插入数据的方法:

public void addCustomer(String firstname, String lastName, String code)
{
    try
    {
        st = getConnection().createStatement();
        st.executeUpdate("insert into customer value(id ," + firstname + "," + lastName + "," + code+")");

    } catch(Exception e)
    {

        throw new RuntimeException(e);
    } finally {

        closeResources(); //method which closes connection, resultset and statements
    }

}

现在我在 Servlet 中调用这个方法,看起来像这样:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=utf-8");
    PrintWriter out = response.getWriter();
    out.println(
            "<form action='/Add' method='post'>"
           +"Eesnimi:<input id='firstNameBox' name='firstName'/> "
           +"Perekonnanim:<input id='lastNameBox' name='lastName'/>"        
           +"Kood:<input id='codeBox' name='code'/>"    
           +"<input type='submit' value='Lisa'/>"   
           );
    String firstname = request.getParameter("firstName");
    String lastName = request.getParameter("lastName");
    String code = request.getParameter("code");
    CustomerDao dao = new CustomerDao();
    dao.addCustomer(firstname, lastName, code);
}

现在我收到SQLSyntaxErrorException : user lacks privilege or object not found: NULL 我很确定这个案例是在addCustomer 方法中,但我无法从谷歌找到解决方案,也许这里的任何人都可以帮助我?

【问题讨论】:

    标签: java servlets jdbc hsqldb


    【解决方案1】:

    插入语句的语法似乎是错误的,因为您遇到了 SQLSyntaxErrorException:

    st.executeUpdate("insert into customer value(
    

    试试这个:

    st.executeUpdate("insert into customer values (
    

    另外,请记住 VALUES 子句的顺序应该与您在客户表上创建的顺序相同。否则,您必须使用完整的 INSERT 语法:

    INSERT INTO table_name (column1,column2,column3,...)
    VALUES (value1,value2,value3,...);
    

    【讨论】:

    • 谢谢,但现在我收到行和列计数不匹配错误。 Sql 语法允许在语句中添加变量吗?
    • 嗯,我在您的 SQL 语句中看到“id”不是来自您的 java 代码的值。它是自动增量字段吗?如果是,我认为您可以从 values 子句中省略。
    猜你喜欢
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 2023-01-12
    • 2011-09-08
    相关资源
    最近更新 更多