JDBC回顾二PreparedStatement与Statement
来源:互联网 发布:算法导论 代码实现 编辑:程序博客网 时间:2024/06/07 02:41
程序对于数据库的操作基本都是增删改,但是对于删我们一般不会用,主要原因是因为在大型开发中,我们删除语句只是更改某一字段的值使其隐藏,这样的话,我们可以保留用户的所有信息,然后可以进行分析,或者避免一些不必要的麻烦。
DML:Data Manipulation Language,数据操纵语言。一般包括INSERT 、UPDATE 、 DELETE。
数据库操作Statement和PreparedStatement接口之间的区别
Statement:用于执行静态 SQL 语句并返回它所生成结果的对象。 他所执行的sql语句需要进行拼接,一方面写着比较麻烦,另一方面也不安全,容易造成sql注入。
PreparedStatement:表示预编译的 SQL 语句的对象。 PreparedStatement接口是Statement接口的子接口,所以他比Statement更具有特点。他所执行的sql语句可以利用占位符进行表示,大大简化了sql语句的编写,而且能够有效的防治sql语句注入。
综上,我们一般使用PreparedStatement而不是用Statement。
executeUpdate():执行给定 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。
利用Statement进行插入
public class Jdbcsta { public static void main(String[] args){ Connection conn =null; Statement stmt = null; try{ Class.forName("com.mysql.jdbc.Driver"); //建立驱动 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/studemo","root","root");//建立连接 stmt = conn.createStatement();//创建语句 String sql="insert into stu() values ("+args[0]+",'"+args[1]+"','"+args[2]+"')"; // Statement拼接语句过于麻烦 System.out.println(sql); stmt.executeUpdate(sql);//执行语句 }catch(ClassNotFoundException e){ e.printStackTrace(); }catch(SQLException e){ e.printStackTrace(); }finally{ try{ if(stmt!=null){stmt.close();stmt=null;} if(conn!=null){conn.close();conn=null;} }catch(SQLException e){ e.printStackTrace(); } } } }
利用PreparedStatement进行插入
public class JdbcPresta { public static void main(String[] args){ Connection conn =null; PreparedStatement ptmt= null; try{ Class.forName("com.mysql.jdbc.Driver"); //建立驱动 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/studemo","root","root");//建立连接 ptmt = conn.prepareStatement("insert into stu values (?,?,?)"); // preparedStatement 直接进行预编译,利用占位符可以有效防治sql注入 int id=0; try { id = Integer.parseInt(args[0]); } catch (NumberFormatException e) { // TODO Auto-generated catch block System.out.println("参数类型错误"); System.exit(-1); } ptmt.setInt(1, id); // 占位符参数设置 ,一参表示当前第几个占位符,二参表示传递的数值 ptmt.setString(2, args[1]); ptmt.setString(3, args[2]); ptmt.executeUpdate(); }catch(ClassNotFoundException e){ e.printStackTrace(); }catch(SQLException e){ e.printStackTrace(); }finally{ try{ if(ptmt!=null){ptmt.close();ptmt=null;} if(conn!=null){conn.close();conn=null;} }catch(SQLException e){ e.printStackTrace(); } } } }
0 0
- JDBC回顾二PreparedStatement与Statement
- JDBC statement与preparedStatement
- JDBC之Statement与preparedStatement
- java JDBC(二):Statement、ResultSet、PreparedStatement
- JDBC中的Statement vs PreparedStatement(二)
- 重温jdbc中的PreparedStatement与Statement
- JDBC中Statement与PreparedStatement的区别
- JDBC中Statement与PreparedStatement的区别
- JDBC中Statement与PreparedStatement的区别
- JDBC中Statement与PreparedStatement的区别
- JDBC 4 PreparedStatement 与Statement 的区别
- JDBC PreparedStatement 与Statement 的区别
- JDBC之statement与preparedstatement的区别
- (转)JDBC应用中的PreparedStatement 与Statement
- jdbc PreparedStatement Statement 比较
- JDBC PreparedStatement & Statement
- JDBC基础(二) 利用Statement/PreparedStatement 操作数据库
- JDBC中PreparedStatement与Statement的区别与使用
- 数字视频去隔行处理的意义、 算法及其特点
- zookeeper分布式的搭建
- express起步
- IE中iframe的跨域问题
- python中if __name__ == '__main__'
- JDBC回顾二PreparedStatement与Statement
- RabbitMQ简单收发,HelloWorld
- VMware中CentOS-7无法访问网络和putty无法连接问题
- javascript中的this
- 使用单选框,复选框,让用户选择
- java源码解读之String
- PAT B1008. 数组元素循环右移问题 (20)
- POJ 3276 Face The Right Way (反转)
- bzoj 1972: [Sdoi2010]猪国杀 (大模拟)