最近在做JavaWeb课程的实践。遇到两个问题:一是如何返回新插入数据库的数据的主键;二是如何在form里传递参数。
之前也做过和数据库相关的 CRUD(增删改查)操作,也遇到这个获取新的主键的问题。但之前那次用的是 Hibernate ,并且做完后也没有记录下解决过程和方法。因此现在记忆模糊不记得是如何解决这个问题了。现在做实践的时候又遇到,怕以后又忘记,因此现在记下来。
Statement stmt = ... ;
stmt.executeUpdate("INSERT INTO table_name(......) VALUES(......)",Statement.:MicRETURN_GENERATED_KEYS);
ResultSet rs = stmt.getGeneratedKeys();
int keyValue = -1;
if (rs.next()) {
keyValue = rs.getInt(1);
}
这个 getGeneratedKeys() 可以返回新生成的主键的 ResultSet 。同时 PreparedStatement 也有这样的方法。
原来 execute() 方法的返回值是影响数据库的记录数。比如插入一条数据的返回应该是1。若是更新数据的话可能会影响多条数据,返回值就是影响的条数。(若错误望指正)
另一个问题是如何在 form 里通过 post 传递任意的参数。我们知道在 form 里的输入框和提交按钮等都是通过 input 标签实现的,而这些标签的 name 属性就是参数的 key值。那现在我需要的就是传递其他一些参数,但又不是输入框之类需要用户输入的东西,这该如何办呢?谷歌了一下才知道原来这么简单。input 的类型除了输入框和按钮外,还有 hidden 这一类,这类标签是不显示的。这样就可以通过隐藏的 input 来传递参数。原来这么简单。
<input type="hidden" name="par" value="写你要提交的参数"/>
这次似乎罗嗦了很多。。。