java_web学习(九) PreparedStatement动态参数的引入

一.PreparedStatement 概述

数据库的操作过程中,PreparedStatement 对象是一个很不起眼但是记为重要的接口对象,它继承 于Statement,并与之在两方面有所不同:

1)PreparedStatement 实例包含已编译的 SQL 语句。这就是使语句“准备好”。包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN参数的值在 SQL 语句创建时未被指定。相反的,该语句为每个 IN 参数保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前,通过适当的setXXX 方法来提供。

2)由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象。因此,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。

二.PreparedStatement应用实例

   2.1第一步导入jar包

     

      

     2.2 创建表t1

  

 1 <body>
 2 <%
 3 //加载数据库驱动给jdbc
 4 Class.forName("org.gjt.mm.mysql.Driver");
 5 out.print("成功加载驱动");
 6 String url ="jdbc:mysql://127.0.0.1:3306/datebase?user=root&password=123456";
 7 //获取数据库连接,让java可以操作mysql
 8 Connection conn = DriverManager.getConnection(url);
 9 //定义一条SQL命令创建一个名为t1的表
10 String sql = "create table t1(sno varchar(20),name varchar(20),birth String)";
11 //从connection对象中,获取一个sql执行者
12 PreparedStatement ps = conn.prepareStatement(sql);
13 //执行
14 ps.execute();
15 out.print( conn );
16 //首先关闭连接
18 ps.close();
19 conn.close();
20 %>
21 
22 </body>

     2.3 对t1表中的数据操作只需要将sql命令替换

<%
String sno="1";
String name="小明";
String birth="2008-08-24";
//加载数据库驱动给jdbc
Class.forName("org.gjt.mm.mysql.Driver");
out.print("成功加载驱动");
String url ="jdbc:mysql://127.0.0.1:3306/datebase?user=root&password=123456";
//获取数据库连接,让java可以操作mysql
Connection conn = DriverManager.getConnection(url);
//定义一条SQL命令
String sql = "insert into student(sno,name,birth) values(?,?,?)";
//从connection对象中,获取一个sql执行者
PreparedStatement ps = conn.prepareStatement(sql);
//防止把代码写死
ps.setString(
1,sno); ps.setString(2,name); ps.setString(3,birth); //执行 ps.execute(); out.print( conn ); //首先关闭连接 ps.close(); conn.close(); %> </body>

//增加信息
String sql="insert into t1(sno,name,birth) values(?,?,?)";

//更改信息
String sql1="UPDATE t1 SET birth=? where sno=?";

//删除信息
String sql2="delete from t1 where sno=?";

原文地址:https://www.cnblogs.com/Crezy/p/6972378.html