我正在使用java将用户插入到sql数据库表中。插件效果很好。 但是,用户标识是主键并获得自动增量。我想在将新用户插入表后获取用户标识的值。
这是插入部分:
PreparedStatement create_statement;
StringBuilder sb = new StringBuilder();
sb.append("INSERT INTO ");
sb.append(this.get_database());
sb.append(".dbo.");
sb.append(this.get_table());
sb.append(" ( username, password, email_addr, first_name, middle_name, last_name, dob, street_addr, phone_num, bio) ");
sb.append(" VALUES( ? , ? , ? , ? , ? , ? , ? , ? , ? , ? );");
try {
create_statement = this.sql_connection.prepareStatement(sb.toString());
create_statement.setString(1, this.username);
create_statement.setString(2, this.password);
create_statement.setString(3, this.email_addr);
create_statement.setString(4, this.first_name);
create_statement.setString(5, this.middle_name);
create_statement.setString(6, this.last_name);
create_statement.setString(7, this.dob);
create_statement.setString(8, this.street_addr);
create_statement.setString(9, this.phone_num);
create_statement.setString(10, this.bio);
create_statement.executeUpdate();
我正在寻找一小时的答案,有些人是通过使用 ResultSet 来完成的。但是,在尝试从 create_statement
获取数据时,我一直收到错误或null帮助:(
答案 0 :(得分:3)
在这里比较executeQuery和executeUpdate:
http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/PreparedStatement.html
您无法从executeUpdate获取ResultSet,因为它返回一个int。你也不能在这里使用executeQuery,因为你要进行INSERT,而不是选择任何东西。请改用
create_statement = this.sql_connection.prepareStatement(sb.toString(),
Statement.RETURN_GENERATED_KEYS);
//your code
ResultSet res = create_statement.getGeneratedKeys();
即使在学习时,变量应该被恰当地命名,它不是create
语句,是吗?