PreparedStatement是Statement的子接口,属于SQL的预处理操作,与直接使用Staement不同的是,PreparedStatement在操作时,是先在数据表中准备好了一条待执行的Sql语句,随后再设置,这样的处理操作模型使得数据库操作更为安全,为了解释PreparedStatement的作用 。下面给出几段代码进行解释。
PreparedStatement数据更新
在使用这个接口进行数据更新操作的时候,可以在编写SQL语句的时候通过占位符‘?’的设计。在进行更新操作或查询操作前利用setXXX()方法依据设置的占位符的索引顺序进行内容设置。
package 数据库;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class PreparedStatement数据操作接口{
private static final String driver="com.mysql.cj.jdbc.Driver";
private static final String url="jdbc:mysql://localhost:3306/booktest?"
+ "characterEncoding=utf-8&serverTimezone=UTC";
private static final String user="root";
private static final String pass="123";
public static void main (String args[])throws Exception{
String Sno="201212124";
String Sname="zhangsan";
String Ssex="男";
int Sage=20;
String Sdept="MA";
java.util.Date Entrance=new java.util.Date();
String sql="insert into Student(Sno,Sname,Ssex, Sage,Sdept,Entrance)"
+ "values(?,?,?,?,?,?);";
Connection con=null;
Class.forName(driver);
con=DriverManager.getConnection(url,user,pass);
PreparedStatement pstate=con.prepareStatement(sql);
//数据库的操作对象,而Statement接口的数据操作对象是
//Statement state=con.createStatement()
pstate.setString(1,Sno); //设置第一个索引内容
pstate.setString(2, Sname); //设置第二个索引内容
pstate.setString(3,Ssex);
pstate.setInt(4, Sage);
pstate.setString(5, Sdept);
pstate.setDate(6, new java.sql.Date(Entrance.getTime()));
int count=pstate.executeUpdate();
//Statement接口的之形数据更新操作是,int count=state.executeUpdate(sql),注意括号里面有SQL语句
System.out.println("更新操作影响的行数:"+count);
con.close();
}
}
preparedStatement数据查询操作
package 数据库; //查询数据表中的全部信息,使用PreparedStatement接口
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Date;
public class PreparedStatement数据操作接口{
private static final String driver="com.mysql.cj.jdbc.Driver";
private static final String url="jdbc:mysql://localhost:3306/booktest?"
+ "characterEncoding=utf-8&serverTimezone=UTC";
private static final String user="root";
private static final String pass="123";
public static void main(String args[])throws Exception {
String sql="select Sno,Sname,Ssex,Sage,Sdept,Entrance from Student";
Connection con=null;
Class.forName(driver);
con=DriverManager.getConnection(url,user,pass);
PreparedStatement pst=con.prepareStatement(sql);
ResultSet rs=pst.executeQuery();
/*查看与Statement接口的不同之处
Statement state=con.createStatement();
ResultSet rs=con.executeQuery(sql);*/
while(rs.next()) {
String sno=rs.getString(1);
String name=rs.getString(2);
String sex=rs.getString(3);
int age=rs.getInt(4);
String Sdept=rs.getString(5);
Date date=rs.getDate(6);
System.out.println("date:"+date);
}
con.close();
}
}