Statement st = conn.createStatement(); st.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); ResultSet rs = st.getGeneratedKeys(); while (rs.next()) { autoInsertId = rs.getLong(1); } rs.close(); st.close();
时间: 2024-02-14 12:33:06 浏览: 57
这是Java代码中执行数据库插入操作的一段代码,具体来说,它执行了以下操作:
- 创建一个Statement对象,该对象用于向数据库发送SQL语句。
- 调用Statement对象的executeUpdate方法,执行一个插入操作,插入的SQL语句为变量sql所表示的语句。
- 在插入数据时,使用了Statement.RETURN_GENERATED_KEYS参数,表示需要返回自动生成的主键值。
- 调用Statement对象的getGeneratedKeys方法,获取刚才插入数据生成的主键值。
- 遍历结果集ResultSet对象,将自动生成的主键值赋值给变量autoInsertId。
- 关闭ResultSet和Statement对象,释放资源。
需要注意的是,这段代码中使用了JDBC的原生API进行数据库操作,因此需要手动管理数据库连接、事务和资源释放等操作。在实际应用中,可以考虑使用ORM框架来简化这些操作。
相关问题
public double getDouble(String sql) { double i = 0; try { Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(sql); if (rs.next()) { i = rs.getDouble(1); } st.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return i; } public void commOper(String sql) { try { Statement st = conn.createStatement(); st.execute(sql); st.close(); } catch (SQLException e) { //捕获SQL异常并进行处理 // TODO Auto-generated catch block e.printStackTrace(); } }
这段代码包含两个Java方法。第一个方法是getDouble,用于执行SQL查询语句,并返回查询结果中第一行第一列的double类型值。参数sql是待执行的SQL查询语句,conn是一个已经建立好的数据库连接。
在该方法中,首先创建一个Statement对象,然后使用该对象执行SQL查询语句。如果查询结果集中有数据,则取出第一行第一列的值,并赋值给变量i。最后,关闭Statement对象以释放资源,并返回变量i的值。
第二个方法是commOper,用于执行SQL语句,包括INSERT、UPDATE、DELETE等操作。参数sql是待执行的SQL语句,conn是一个已经建立好的数据库连接。
在该方法中,首先创建一个Statement对象,然后使用该对象执行SQL语句。如果SQL语句是INSERT、UPDATE、DELETE等操作,则使用Statement对象的execute()方法执行;如果SQL语句是SELECT等查询操作,则使用Statement对象的executeQuery()方法执行。最后,关闭Statement对象以释放资源。
需要注意的是,在使用完Statement对象后,应该及时关闭以释放资源。另外,该方法可能存在SQL注入漏洞,应该避免直接拼接SQL语句,而是使用参数化查询或者ORM框架来构建SQL语句。
public int getInt(String sql) { int i = 0; try { Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(sql); if (rs.next()) { i = rs.getInt(1); } st.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return i; }
这段代码是一个执行 SQL 查询语句并返回结果的方法。它接收一个 SQL 查询语句作为参数,返回一个 `int` 类型的结果。
具体来说,该方法中首先创建了一个 `Statement` 对象 `st`,然后使用 `st.executeQuery()` 方法执行 SQL 查询语句并获取查询结果集 `rs`。接着,它调用 `rs.next()` 方法判断结果集中是否有数据行。如果有,它就调用 `rs.getInt(1)` 方法获取第一列的整数值,并将其赋值给变量 `i`。最后,它关闭了 `Statement` 对象 `st` 并返回 `i`。
需要注意的是,该方法中可能会抛出 `SQLException` 异常,因此需要在异常处理部分进行相应的处理。此外,该方法没有对 SQL 查询语句进行参数化处理,存在 SQL 注入的风险。建议使用预编译语句或者参数化查询来避免这种风险。
阅读全文