- 一、JDBC概念
JAVA数据库连接(Java Database Connectivity,简称JDBC),用java语言实现java程序与数据库的连接,并通过java语言对数据库进行增删改查等基本操作。
- 二、JDBC连接数据库七大步骤
1、导入要访问的数据库的JDBC驱动器的类库将mysql-connector-java-bin.jar导入到java项目中![]()
2、加载并注册JDBC驱动器Class.forName("com.mysql.jdbc.Driver");MySQL的驱动器类能在加载自动调用注册方法,所以只需要加载即可
3、建立与数据库的连接Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/myjdbc","root","123456");
4、创建PreparedStatement对象pstmt区分Statement与PreparedStatement:PreparedStatement接口继承自Statement,用来执行预准备的SQL语句,对于含参数的sql语句使用PreparedStatement,数据库只需要对这种sql语句编译一次,然后就可以多次执行 而当每次用Statment执行SQL语句时,数据库都需要对该SQL语句进行编译。
Statement stmt = connection.createStatement(); //使用connection.createStatement()方法ResultSet rs = pstmt.executeQuery(sql);//需要传sql语句作为参数
PreparedStatement pstmt = connection.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();//不需要传参数
5、执行SQL语句PreparedStatement pstmt = connection.prepareStatement(sql);ResultSet rs = pstmt.executeQuery();
6、访问ResultSet中的记录集while(rs.next()){//用字段序号作为参数System.out.println(rs.getString(1));System.out.println(rs.getString(1));
/*等价于(用字段名作为参数)System.out.println(rs.getString("id"));System.out.println(rs.getString("name"));*/}
7、依次关闭ResultSet、Statement/PreparedStatement和Connection对象rs.close();stmt.close(); //pstmt.close();connection.close();
- 三、JDBC学习总结
1、需要先理解如何访问数据库,重点是根据七个步骤进行理解
2、将各种功能抽象出来,建立单独的包或者类,功能
3、灵活运用可变数组以及多态性,增强代码的通用性
- 四、PreparedStatement如何防止 SQL 注入
strSQL = "SELECT * FROM users WHERE name = '" + userName + "' and pw = '"+ passWord +"';"
恶意填入:
userName = "1' OR '1'='1";
passWord = "1' OR '1'='1";
最后生成的SQL查询语句为:
strSQL = "SELECT * FROM users WHERE name = '1' OR '1'='1' and pw = '1' OR '1'='1';"
而使用PreparedStatement的最终语句为
SELECT * FROM users WHERE name = '1\' OR \'1\'=\'1' ;
会将中间的单引号进行转义,从而字符串中的一个字符而已,有效防止sql注入。