【发布时间】:2014-08-12 08:07:58
【问题描述】:
是否可以从 MySQL 表中获取 id 并将其“保存”到 JDBC 上的变量中?
在我的程序中,我有一个JTextfield,用户在其中提供了一张票,该票将存储在 MySQL 数据库中。每次他给票时,我想从插入票的数据库中获取 id,而不是在终端上打印,而是将其解析为变量并在其他类上使用它。我需要它用于其他课程。
有可能吗?
【问题讨论】:
是否可以从 MySQL 表中获取 id 并将其“保存”到 JDBC 上的变量中?
在我的程序中,我有一个JTextfield,用户在其中提供了一张票,该票将存储在 MySQL 数据库中。每次他给票时,我想从插入票的数据库中获取 id,而不是在终端上打印,而是将其解析为变量并在其他类上使用它。我需要它用于其他课程。
有可能吗?
【问题讨论】:
这样的?
statement.executeUpdate();
ResultSet generatedKeys = statement.getGeneratedKeys();
long generatedId= 0L;
if (generatedKeys.next()) {
generatedId = generatedKeys.getLong(1);// here is your generated Id ,
}
【讨论】:
类似的东西?
PreparedStatement st;
st = con.prepareStatement("SQL STATAMENT", "HERE COLUMN NAME FROM TABLE") VALUES(?)",Statement.RETURN_GENERATED_KEYS);
st.setString(1,"Binded String Veriable");
st.executeUpdate();
ResultSet rs = st.executeQuery("select last_insert_id() as id from "HERE TABLE NAME"");
if(rs.next()){
int lastId = Integer.parseInt(rs.getString("id"));
使用 PrpearedStatment 来防止 SQL 注入,例如:
st = con.prepareStatement("INSERT INTO component(user) VALUES(?)", Statement.RETURN_GENERATED_KEYS )
st.setString(1,username)
这里有 last_insert_id() 的工作原理:JDBC LAST INSER ID AND OTHER
【讨论】: