Java 是否将jsp表单中的整数插入数据库表?

Java 是否将jsp表单中的整数插入数据库表?,java,jsp,jdbc,insert-statement,Java,Jsp,Jdbc,Insert Statement,请参阅下面我的代码 //connect //reading params from the form String name = request.getParameter("name"); String year_prime = request.getParameter("year"); int year = Integer.parseInt(year_prime); //inserting the params into table Students stmt.executeUpdate("

请参阅下面我的代码

//connect
//reading params from the form
String name = request.getParameter("name");
String year_prime = request.getParameter("year");
int year = Integer.parseInt(year_prime);

//inserting the params into table Students
stmt.executeUpdate("insert into students(name,year) values('"+name+"', year)");

//close connection

我试图获取
年份
值,它是一个
int
,并将其插入数据库表中。然而,我得到了一个错误,插入方法似乎只适用于
字符串。有人能帮我解决这个问题吗。

以下链接可能会帮助您了解基本知识和工作示例:

  • 虽然我不推荐在JSP中包含JDBC连接代码,而且这也不是一种普遍做法,但为什么呢?这是给你的礼物


    希望这对您有所帮助。

    以下链接可能会帮助您了解基本知识和工作示例:

  • 虽然我不推荐在JSP中包含JDBC连接代码,而且这也不是一种普遍做法,但为什么呢?这是给你的礼物


    希望这有帮助。

    使用
    PreparedStatement
    而不是常规的
    语句。另外,使用
    executeQuery()
    代替
    executeUpdate()
    使用
    PreparedStatement
    代替常规的
    语句。另外,使用
    executeQuery()
    而不是
    executeUpdate()

    您应该使用
    prepreadstatement
    。从您的帖子中,我可以看到您的
    VALUES()
    set的值不正确

    stmt.executeUpdate("insert into students(name,year) values ('" + name + "'," + year ")");
    
    使用PreparedStatement执行数据库操作既简单又安全:

    String sql="insert into students(name,year) values (?,?)";
    PreparedStatement statement=cn.prepareStatement(sql);
    statement.setString(1,name);
    statement.setInt(2,year);
    statement.executeUpdate();
    

    您应该使用
    preaprestatement
    。从您的帖子中,我可以看到您的
    VALUES()
    set的值不正确

    stmt.executeUpdate("insert into students(name,year) values ('" + name + "'," + year ")");
    
    使用PreparedStatement执行数据库操作既简单又安全:

    String sql="insert into students(name,year) values (?,?)";
    PreparedStatement statement=cn.prepareStatement(sql);
    statement.setString(1,name);
    statement.setInt(2,year);
    statement.executeUpdate();
    

    您得到的错误是什么?我希望您已经知道,在JSP中创建和使用jdbc连接通常不是一个好的做法,只是提醒您一句。如果您能给出错误或异常的整个堆栈跟踪,这将非常有用。谢谢你犯了什么错误?我希望您已经知道,在JSP中创建和使用jdbc连接通常不是一个好的做法,只是提醒您一句。如果您能给出错误或异常的整个堆栈跟踪,这将非常有用。ThanksI在一个我命名为ConnectionsManager.java的java文件中建立了连接。我只是用JSP调用它们。在JSP中,我调用connect方法,最后调用close connection方法(即,我将连接返回到ConnectionManager)。错误是:我尝试使用executeQuery():javax.servlet.ServletException:java.sql.SQLException:无法使用executeQuery()发出数据操作语句。@KyupaSuria:编辑您的问题以包含错误,以便其他人也可以看到它。请不要在我的回答中添加例外:-)我在一个名为ConnectionsManager.java的java文件中建立了连接。我只是用JSP调用它们。在JSP中,我调用connect方法,最后调用close connection方法(即,我将连接返回到ConnectionManager)。错误是:我尝试使用executeQuery():javax.servlet.ServletException:java.sql.SQLException:无法使用executeQuery()发出数据操作语句。@KyupaSuria:编辑您的问题以包含错误,以便其他人也可以看到它。请不要在我的回答中加入例外情况:-)我明白了(我也阅读了你发布的链接-谢谢你):如果我的主键(在我的例子中是ID)不是自动递增的,我使用以下语法:stmt.executeUpdate(“插入学生(ID,姓名,年份)值(1,“+name+”,year)”);stmt.executeUpdate(“插入学生(id、姓名、年份)值(2,“+name+”,年份)”)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。我可能会用一个环。如果主键是自动递增的,我使用以下语法:stmt.executeUpdate(“插入学生(姓名,年份)值(“+name+”,年份)”);省略“id”@carlspring:
    executeUpdate()
    是在这种情况下使用的正确方法(请参阅),并且建议使用
    PreparedStatement
    ,因为它有很多好处,但在这种情况下,
    语句
    也可以。@PrakashK,虽然您对
    executeUpdate()
    的看法可能确实正确,虽然我当然同意您可以使用常规的
    语句
    ,但使用
    PreparedStatement
    在安全性方面更为合理,因为您可以避免可能的SQL注入攻击,因为这是一个JSP页面,这意味着有可能传入恶意设计的未替换值,这可能会危害您的系统。因此,我强烈建议避免使用regluar
    语句,除非您在内部使用它们,因为外部世界不会影响您的价值观。@PrakashK:另外,关于
    executeQuery()
    /
    executeUpdate()
    ,我的JDBC知识有些生疏,因为现在,我们大多数人都在使用Hibernate之类的框架我明白了(我也阅读了你发布的链接-谢谢你):如果我的主键(在我的例子中是ID)不是自动递增的,我会使用以下语法:stmt.executeUpdate(“插入学生(ID,name,year)值(1,“+name+”,year)”);stmt.executeUpdate(“插入学生(id、姓名、年份)值(2,“+name+”,年份)”)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。我可能会用一个环。如果主键是自动递增的,我使用以下语法:stmt.executeUpdate(“插入学生(姓名,年份)值(“+name+”,年份)”);省略“id”@carlspring:
    executeUpdate()
    是在这种情况下使用的正确方法(请参阅),并且建议使用
    PreparedStatement
    ,因为它有很多好处,但在这种情况下,
    语句
    也可以。@PrakashK,虽然您对
    executeUpdate()
    的看法可能确实正确,虽然我当然同意您可以使用常规的
    语句
    ,但使用
    PreparedStatement
    在安全性方面更为合理,因为您可以避免可能的SQL注入攻击,因为这是一个JSP页面,这意味着有可能传入恶意设计的未替换值,这可能会危害您的系统。所以