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页面,这意味着有可能传入恶意设计的未替换值,这可能会危害您的系统。所以