JDBC2

作者: Hoffnung_8164 | 来源:发表于2020-05-21 00:02 被阅读0次

    1.4 细节问题

            注册驱动:告知程序要使用哪一个数据库的jar包

                Class.forName("com.mysql.jdbc.Driver");

                注:mysql5版本以后,注册驱动的语句可以省略

            Connection连接对象

    /*

    * 参数:

    * 1.要连接的数据库:

                jdbc:mysql://地址:端口号/库名 ; 如果地址是本机,端口是3306,那么可以写成:jdbc:mysql:///库名

    * 2.数据库管理员身份的用户名

    * 3.数据库管理员身份的密码

    */

    Statement执行对象

    用于执行SQL语句

    executeUpdate(String sql):执行增删改查,返回 int 值,表示影响的记录数

    executeQuery(String sql):执行查询,返回结果集 ResultSet

    ResultSet结果集对象

    用于封装查询后的结果

        方法:

                    next():判断是否有下一条可遍历的记录,返回布尔值

                    getXxx(参数):该方法有重载,参数可以是int,也可以是String;参数是int时字段值根据字段在结果集中的第几列获取;参数是String时字段值根据字段名获取。

                    ResultSet、Statement、Connection都需要释放 close()

            形参与SQL语句中的关键字之间要有空格,否则关键字与参数拼接会报错

    1.5 SQL注入问题

            用一些关键字与字符串进行拼接,会造成造成安全性的问题

                    例如:select * from user where username = 'qwer' and password = '1234' or '1' = '1'; '1' = '1' 是一个恒等式结果永远为true,而 '1' = '1'前又使用了or关键字,从而导致了用户名和密码有误也能成功登录。

            解决办法:使用PreparedStatement对象

                1.  参数参与SQL语句不再使用字符串的拼接,而使用了占位符

                            占位符中的关键字,不再以关键字的形态出现

    1.5.1 PreparedStatement的获取

                PreparedStatement pstmt = conn.preparedStatement(String sql);

                    将SQL语句预编译

    1.5.2 PreparedStatement的功能

                为占位符设置值

                        setXxx(参数1,参数2)

                            参数1:问号的位置,从1开始

                            参数2:问号位置上的值

                执行SQL

                            executeUpdate():执行增删改查,返回 int 值,表示影响的记录数

                            executeQuery():执行查询,返回结果集 ResultSet

    相关文章

      网友评论

          本文标题:JDBC2

          本文链接:https://www.haomeiwen.com/subject/hjkaohtx.html