3.JDBC之预编译

由于在书写sql语句时拼接时容易出错

举个栗子:

String sql = "insert into stu values("+stu.getId()+",'"+stu.getName()+"',"+stu.getAge()+")";

当用预编译语句时直接写成这样:

String sql = "insert into stu values(?,?,?)";

基本知识:

预编译语句通过PrepareStatement对象实现,通过调用SetXXX(index, value)方法来传递参数。

实例:

String sql = "insert into stu(id,name,age) values(?,?,?)";
prepareStatement ps = conn.prepareStatement(sql);
			//设置sql语句的参数
			ps.setInt(1, stu.getId());
			ps.setString(2, stu.getName());
			ps.setInt(3, stu.getAge());
			//4.执行sql语句 该方法不用参数
			ps.executeUpdate();

预编译性能优化:部分数据库支持预编译池

在这里插入图片描述

存储过程相关:

   		//1.连接数据库
		Connection conn = JDBCUtil.getConn();
		//2.调用存储过程
		 java.sql.CallableStatement cs = conn.prepareCall("{ call getStu(?,?)}");
		//3.设置参数
		 cs.setInt(1, 3);
		 cs.registerOutParameter(2, Types.VARCHAR);
		 cs.execute();
		 
		 String name = cs.getString(2);
		 System.out.println(name);
		//4.释放资源
);
posted @ 2020-02-18 15:03  pony.ma  阅读(167)  评论(0编辑  收藏  举报