<Leo>Java------JDBC学习总结

  • 一、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注入。

                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值