JDBC(Java Data Base Connectivity java 数据库连接)是一种用于执行SQL语句的JAVA API
可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。
"password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) {
int x = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
//若将pwd的值定义为:ddd' or '1'='1
//通过preparedStatement预编译后,执行的SQL语句将是:
//select * from t_u where name = 'zs'
// and pwd ='ddd\' or \'1\'=\'1'
/**实现机制不同,注入只对sql语句的准备(编译?)过程有破坏作用
而ps已经准备好了,执行阶段只是把输入串作为数据处理,不再
需要对sql语句进行解析,准备,因此也就避免了sql注入问题.
*PreparedStatement可以在传入sql后,执行语句前,给参数赋值,
*避免了因普通的拼接sql字符串语句所带来的安全问题,而且准备sql
*和执行sql是在两个语句里面完成的,也提高了语句执行的效率
*/
ResultSet rst= prep.executeQuery();
System.out.println("rst: "+rst);
//System.out.println("rst: "+rst.getStatement());
//判断结果集rs是否有记录,并且将指针后移一位
可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。
JDBC 可以做三件事情:与数据库建立连接、发送操作数库的语句并处理结果。
常用语句如下
Class.forName("com.mysql.jdbc.Driver");
"password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) {
int x = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
}
Statement和PreparedStatement:
Statement接口代表一个数据库的状态,在向数据库发送相应的SQL语句时候都要用这两个接口。而statement是操作没有参数的sql语句,而preparedStatement即可以操作有参数的,也可以操作没有参数的,所以preparedStatement避免了sql注入问题。
//若将pwd的值定义为:ddd' or '1'='1
//通过preparedStatement预编译后,执行的SQL语句将是:
//select * from t_u where name = 'zs'
// and pwd ='ddd\' or \'1\'=\'1'
/**实现机制不同,注入只对sql语句的准备(编译?)过程有破坏作用
而ps已经准备好了,执行阶段只是把输入串作为数据处理,不再
需要对sql语句进行解析,准备,因此也就避免了sql注入问题.
*PreparedStatement可以在传入sql后,执行语句前,给参数赋值,
*避免了因普通的拼接sql字符串语句所带来的安全问题,而且准备sql
*和执行sql是在两个语句里面完成的,也提高了语句执行的效率
*/
ResultSet rst= prep.executeQuery();
System.out.println("rst: "+rst);
//System.out.println("rst: "+rst.getStatement());
//判断结果集rs是否有记录,并且将指针后移一位
//因为前面的select语句是限定的条件,只有满足了条件才能有记录产生
参看连接:http://blog.youkuaiyun.com/lfsf802/article/details/7378053
http://baike.haosou.com/doc/2417290-2555569.html