• JDBC 连接Oracle数据库 各个对象的理解


    JDBC:

    1. **代码实现:(连接oracle数据库)

    ​    1.导入驱动jar包

    ​    2.注册驱动

    ​     Class.forName("oracle.jdbc.driver.OracleDriver");

        3.获取数据库连接对象

        ​ Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:端口号/数据库名","user","password");

    ​    4.定义sql语句

    ​     String sql = "update XE set name='ttt' where id = 1";

    ​    5.获取执行sql的对象 Statement

    ​     Statement stmt = conn.createStatement();

    ​    6.执行sql

    ​     int i =stmt.executeUpdate(sql);

    ​    7.处理结果

    ​     System.out.println(i);

    ​    8.释放资源

    ​     stmt.close();

        ​ conn.close();

    2.详解各个对象

    ​     1.DriverManager:驱动管理对象

    ​           *功能:

    ​              1.注册驱动:告诉程序去使用哪一个数据库驱动jar包

    (DriverManager类中有一个注册驱动的静态方法 registerDriver(Driver driver,DriverAction da))通过查看源码可知oracle.jdbc.driver.OracleDriver类中有一段静态代码块,里面有注册驱动的代码。

    ​              2.获取数据库连接:

    ​                         *方法:static Connection getConnection(String url,String user,String password)

    ​                         *参数:

    ​                                  url:指定链接的路径 ip 端口 数据库名

    ​                                  user:用户名

    ​                                  password:密码

    ​     2.Connection:数据库连接对象

    ​         1.功能:

    ​             1.获取执行sql的对象

    ​                 *Statement createStatement()

    ​                 *PreparedStatement prepareStatement(String sql)

    ​              2.管理事务:

    ​                 * 开启事务 setAutoCommit(boolean autoCommit)设置为false,既开启事务。

             ​        * 提交事务 commit()

             ​        * 回滚事务 rollback()

    ​     3.Statement:执行sql对象 (处理静态的sql语句)

    ​         1.boolean execute(String sql): 可以执行任何sql 了解

    ​         2.int executeUpdate(String sql):执行DML语句(insert、update、delete),DDL(create、alter、drop)语句

    ​           返回值:表示影响的行数。返回值>0执行成功

    ​         3.ResultSet executeQuery(String sql):执行DQL(select)语句

    ​           返回的是结果集对象

    ​     4.PreparedStatement:执行sql对象 (处理动态的sql语句,也就是预处理的sql语句)    

             1.SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题

                1.输入用户随便,输入密码:a' or 'a'='a

                2.sql : select * from user where username = 'dsfudgu' and password = 'a' or 'a'='a'

             2.解决sql注入问题 :使用PreparedStatement对象解决问题

             3.预编译的SQL:参数使用?作为占位符

             4.步骤:

               1.导入驱动jar包

               2.注册驱动

                Class.forName("oracle.jdbc.driver.OracleDriver");

               3.获取数据库连接对象 Connection

               4.定义sql语句

                  * 注意:sql 的参数使用?作为占位符。如 select * from user where username = ?and password = ?;

               5.获取执行sql的对象 PreparedStatement

                  Connection.PreparedStatement(String sql);

               6.给?赋值:

                  * 方法:setxxx(参数1,参数2 )

                   *参数1:?的位置编号从1开始

                   *参数2:?的值

               7.执行sql

                  int i =stmt.executeUpdate();

               8.处理结果

               9.释放资源

                 ps.close();

                 conn.close();

    ​     5.ResultSet:结果集对象,封装查询结果的

    ​          * boolean next(): 游标向下移动一行 判断当前行时候是最后一行,如果是,则返回false,否则返回true

    ​          * getxxx(参数): 获取数据

    ​          *xxx: 代表数据类型

    ​            *参数

    ​              1.Int: 代表列的编号,从1开始。 如getString(1) 获取第一列的值

                  2. String:列的名称

    ​                *注意:

                      *使用步骤:

    ​                    1.游标向下移动一行

    ​                    2.判断时候有数据

    ​                    3.获取数据

  • 相关阅读:
    ruby 实现java中的aes 加密解密
    移动端手机端web页面中背景图固定问题
    hooks 组件对应的生命周期
    React 生命周期函数总结
    Sequelize 常用增删改查函数
    如何验证SSH的连通性
    如何生成SSH密钥
    如何查看本机ssh秘钥
    如何更改本地代码仓库指向
    如何发布npm 包
  • 原文地址:https://www.cnblogs.com/jamers-rz/p/13674728.html
Copyright © 2020-2023  润新知