day05-17-jdbc预编译&SQL注入
原创
©著作权归作者所有:来自51CTO博客作者wx63186321c235c的原创作品,请联系作者获取转载授权,否则将追究法律责任
预编译与非预编译的区别
1、(写法上区别)预编译,在写sql语句时,变量用?占位符,这样简洁,不容易出错
2、(安全性)避免了sql注入(非预编译是拼接的sql,不安全)
package day05.jdbc;
import java.sql.*;
/*
预编译与非预编译的区别
1、(写法上区别)预编译,在写sql语句时,变量用?占位符,这样简洁,不容易出错
2、(安全性)避免了sql注入(非预编译是拼接的sql,不安全)
*/
public class Demo04 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1、建立连接
Connection connection =MysqlUtil.getConn();
//3、写sql
long id =2;
String sql = "select * from auth_permission where id=?";
//4、预编译
PreparedStatement ps = connection.prepareStatement(sql);
//java只有jdbc这里下标不是从0,而是从1开始数
//parameterIndex=1,下标为1的占位符?
ps.setLong(1,id);
//5、执行查询
ResultSet resultSet = ps.executeQuery();//执行的时候不传sql了
//6、处理结果集
while (resultSet.next()){
System.out.println("id:"+resultSet.getLong("id"));//id是int类型,这里用getLong
System.out.println("name:"+resultSet.getString("name"));//name是String类型,用getString
System.out.println("content_type_id:"+resultSet.getInt("content_type_id"));
System.out.println("codename:"+resultSet.getString("codename"));
System.out.println("===============");
System.out.println(resultSet.getLong(1));//第一列,下标也是从1开始的
System.out.println(resultSet.getString(2));//第二列
}
//7、关闭连接
MysqlUtil.close(connection);
}
}