Statement接口和PreparedStatement接口的区别

本文深入对比了PreparedStatement与Statement接口在数据库操作中的应用。PreparedStatement提供更高效、安全且易读的SQL执行方式,通过预编译SQL语句并使用占位符,避免了SQL注入风险,提升了执行效率。
摘要由CSDN通过智能技术生成
  1. Statement接口在创建语句对象时,不带参数,进行查询更新操作时,再传入完整的SQL 语句。而PreparedStatement接口创建预处理语句对象时,传入带?的SQL语句,进行查询更新操作时,不带参数。
  2. PreparedStatement接口代码可读性高,无需拼接SQL语句,语句和代码分离。
  3. PreparedStatement接口执行效率高,它预编译和缓存了结构相同的SQL语句,想String常量池。
  4. PreparedStatement接口安全性更高,避免了产生SQL漏洞注入。

使用PreparedStatement接口完成数据更新操作

//步骤1---通过反射实例化数据库驱动类
//Class.forName("完整的数据库驱动类名");  
Class.forName("com.mysql.jdbc.Driver");  

//步骤2---调用DriverManager的静态工厂方法获取数据库连接对象
//Connection conn = DriverManager.getConnection("jdbc:mysql://数据库所在的主机名或IP地址:端口号/数据库名", "连接数据库的用户名", "连接数据库的密码"); 
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/news", "root", "1");

//步骤3---准备带?的SQL语句
String sql = "xxx";

//步骤4---调用连接对象的工厂方法创建预处理语句对象,传入sql语句
PreparedStatement pstmt = conn.prepareStatement(sql);     

//步骤5---调用预处理语句对象的setXXX()方法为SQL语句中的每个?传参
pstmt.setXXX(参数序号, 参数值);

//步骤6---调用预处理语句对象的更新方法,返回本次更新所影响的记录行数,行数>0---表示更新成功 行数=0---找不到要更新的数据 行数<0---更新失败
int rows = pstmt.executeUpdate();    

//步骤7---关闭预处理语句对象和数据库连接对象
pstmt.close();
conn.close();

使用Statement接口完成数据查询操作

//步骤1---通过反射实例化数据库驱动类
//Class.forName("完整的数据库驱动类名");  
Class.forName("com.mysql.jdbc.Driver");  

//步骤2---调用DriverManager的静态工厂方法获取数据库连接对象
//Connection conn = DriverManager.getConnection("jdbc:mysql://数据库所在的主机名或IP地址:端口号/数据库名", "连接数据库的用户名", "连接数据库的密码"); 
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/news", "root", "1");

//步骤3---调用连接对象的工厂方法创建语句对象
Statement stmt = conn.createStatement();     

//步骤4---准备完整的SQL语句
String sql = "select...";

//步骤5---调用语句对象的查询方法,传入SQL语句,返回结果集对象 
ResultSet rs = stmt.executeQuery(sql);    

//步骤6---使用while循环遍历结果集,调用next()方法将指针移动到下一条记录
while(rs.next()){
//步骤7---使用结果集对象的getXXX()方法获取当前记录中不同数据类型的字段值	
}

//步骤8---关闭结果集对象,语句对象,数据库连接对象
rs.close();
stmt.close();
conn.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值