PreparedStatement数据操作接口

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();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值