stmt.executeUpdate(sql); 和stmt.executeQuery(sql);有什么区别?

stmt.executeUpdate(sql);用于更新,sql必须是一个更新语句
stmt.executeQuery(sql);用于查询,sql必须是一个查询语句
ResultSet需要关闭,但是如果不关闭也不会给数据带来破坏,知识ResultSet对象会持续保留在内存中,直到虚拟机关闭。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,建议将数据库连接池引入代码中,以避免每次调用数据库时都要重新连接。这将大大减少连接和关闭数据库的开销。 其次,建议使用预编译语句,以避免每次执行 SQL 语句时都要重新编译。这也将大大减少编译和执行 SQL 语句的开销。 最后,可以在数据库中添加索引以加快查询速度。在这个例子中,可以在 username 和 password 字段上创建索引。 下面是经过优化的代码: import java.sql.*; import javax.sql.DataSource; import org.apache.commons.dbcp2.BasicDataSource; public class UserDAO { private DataSource dataSource; public UserDAO() { BasicDataSource ds = new BasicDataSource(); ds.setUrl("jdbc:mysql://localhost:3306/mydb"); ds.setUsername("username"); ds.setPassword("password"); ds.setInitialSize(5); dataSource = ds; } public boolean register(String username, String password) { try (Connection conn = dataSource.getConnection(); PreparedStatement stmt = conn.prepareStatement( "INSERT INTO user (username, password) VALUES (?, ?)")) { stmt.setString(1, username); stmt.setString(2, password); int rows = stmt.executeUpdate(); return rows > 0; } catch (SQLException e) { e.printStackTrace(); return false; } } public boolean login(String username, String password) { try (Connection conn = dataSource.getConnection(); PreparedStatement stmt = conn.prepareStatement( "SELECT * FROM user WHERE username = ? AND password = ?")) { stmt.setString(1, username); stmt.setString(2, password); ResultSet rs = stmt.executeQuery(); return rs.next(); } catch (SQLException e) { e.printStackTrace(); return false; } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值