JDBC概念
JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
JDBC实现的三种功能
1、进行java代码和数据库之间的连接。
2、发送SQL语句
3、返回操作数据库的结果
DriverManage | Connection | Statement(PreparedStatement) | CallableStatement | result | |
---|---|---|---|---|---|
功能 | 管理JDBC驱动 | 连接 | 增删改查 | 调用数据库中的存储过程/函数 | 返回结果集 |
JDBC访问数据库的步骤
1、导入驱动,创建对应的驱动类
private String className="com.microsoft.sqlserver.jdbc.SQLServerDriver";
Class.forName(className);
2、建立数据库和java代码的连接
Connection con=DriverManager.getConnection(url,user,password);
3、进行数据库的操作
Statement stm;
String sql = "select count(*) from student where student_id='"+name+"' AND student_possword='"+pswdd+"' ";
stm=con.createStatement();
re=stm.executeQuery(sql);
4、返回结果集
public ResultSet getRs() throws SQLException{
return pstm.getResultSet();
}
5、进行关闭
rs.close();
pstm.close();
con.close();
PreparedStatement和Statement比较
PreparedStatement | Statement | |
---|---|---|
当有N句相同的sql语句时编译次数 | 1次 | N次 |
防止sql注入 | 可以 | 不可以 |
sql注入方式:
(1)、sql 语句:select from login where uname=' " +name+" ' and password=' "+password+ " ';
(2)、将参数:任意值 ' or 1=1 --
加入sql语句中。
(3)、结果是恒成立。
原因:
(1)、参数中的任意值后面的 '
与sql语句的'uname=" " '
的第一个'
匹配,变成:uname=' "任意值 ' or 1=1 --"'
(2)、–是sql语法中的注释,所以,1=1 --
之后的语句都被注释了,继而形成了一个恒等式。