• JDBC基础


    1.JDBC介绍

    JDBC(Java Database Connectivity)是基于JAVA语言访问数据库的一种技术。
    JDBC包括一套JDBC的API和一套程序员和数据库厂商都必须去遵守的规范。
    定义在两个包中:

    java.sql包:提供访问数据库基本的功能
    javax.sql包:提供扩展的功能

    2.JDBC可以做些什么?

    连接到数据库
    在Java app中执行SQL命令
    处理结果。

    3.JDBC中常用的接口和类

    1.Java.sql.DriverManager 驱动管理器。用来装载驱动程序,并且为创
    建新的数据库连接提供支持。
    2. Java.sql.Connection完成对某一指定数据库的连接
    3. Java.sql.Statement在一个给定的连接中作为SQL执行语句的容器,他包含了两个重要的子类型。

    – Java.sql.PreparedSatement用于执行预编译的sql语句
    – Java.sql.CallableStatement用于执行数据库中存储过程的调用

    4. Java.sql.ResultSet对于给定SQL语句取得结果的途径


    4.通过JDBC连接数据库的步骤:

    1.加载驱动程序
    使用Class.forName()显式加载驱动程序。

    例如:
    Class.forName(“oracle.jdbc.driver.OracleDriver”);
    加载了oracle提供的jar包内的OracleDriver类

    2. 建立连接
    使用DriverManager.getConnection(url);建立与给定数据库URL的连接。

    例如

    1 String url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
    2 String user="SCOTT";
    3 String password = "tiger";
    4 Connection conn = DriverManager.getConnection(url, user, password);

    5.处理块Statement

    5.1 静态处理块 Statement

    特点: 静态的sql语句
    创建: Connection对象调用 createStatement() 方法
    操作:

    executeQuery(String sql) --> select 查询
    executeUpdate(String sql) --> DML操作(insert 、delete、update)
    execute(String sql) --> DDL操作

    5.2 预处理块 PreparedStatement

    特点: 动态的sql语句 凡是Statement 能够处理的 PreparedStatement都能处理反之不一定
    创建: Connection对象调用 prepareStatement(String sql) 方法
    操作:

    executeQuery(String sql) --> select 查询
    executeUpdate(String sql) --> DML操作(insert 、delete、update)
    execute(String sql) --> DDL操作
    可以使用"?"作为参数替换SQL语句中的部分值,后面传入参数(可解决SQL注入问题)

    可定义参数的位置:

    select -->where sal=?
    insert --> values(?)
    update --> set sal=? where deptno=?
    delete --> where sal=?

    设置参数值:setXxx(int index, Xxx x)
    index:第几个参数
    Xxx:参数类型
    x:参数值
    注:定义的参数必须填充
    例:

    1  String sql = "select * from t_user where username = ? and password = ?";
    2  PreparedStatement ps = conn.prepareStatement(sql);
    3  String u = "zhangsan";
    4  String p = "123456";
    5  ps.setString(1, u);
    6  ps.setString(2, p);
    7  ResultSet rs = stat.executeQuery(sql);

    5.3 总结:

    1.Statement对象在每次执行sql语句时都将语句传给数据库,在多次执行同一个语句时,效率比较低。
    2.Statement对象Sql注入引起安全问题。
    3.可以使用PreparedStatement,使用数据库的预编译功能,速度可以提高很多.避免sql注入引起的安全问题。
    4.PreparedStatement对象的sql语句可以接受参数,每次执行时可以传递不同的参数


    6.检索结果集

    处理块调用executeQuery(sql)方法会返回一个ResultSet类的对象

    ResultSet的基本处理方法:
    – ResultSet对象包括一个由查询语句返回的一个表,这个表中包含所有的查询结果,按照行和列进行处理.
    – ResultSet对象维持一个指向当前行的指针.最初,这个指针指向第一行之前.ResultSet类的next()方法使这个指针移向下一行.第一次,使用next()方法,将指针指向结果集的第一行.next方法的返回值是一个boolean值,若为true,则成功移向下一行.若返回false则没有下一行.
    – getXXX方法可以从某一列中获得结果.其中XXX是jdbc中的java数据类型.如getInt();需要制定检索的列,或名称


    7.查询数据库步骤:

    1.加载数据库驱动类

    1)在工程下新建lib文件夹,将 ojdbc6.jar(jar包在:E:oracleproduct11.2.0dbhome_1jdbclib)拷贝至该目录下
    2)右键ojdbc6.jar文件,build path --> add too build path
    3)将驱动类加载到内存中
    Class.forName("oracle.jdbc.driver.OracleDriver");

    2.获取数据库连接对象

    Connection conn = DriverManager.getConnection(url,user,password);

    3.写sql语句

    String sql = "xxxxxx";

    4.创建PreparedStatement对象

    PreparedStatement ps = conn.prepareStatement(sql);

    5.执行查询返回ResultSet结果集对象

    ResultSet rs = ps.executeQuery();

    6.遍历结果集,获取查询结果

    while(rs.next){
    rs.getXxx()
    }

    7.释放资源

    rs.close()
    ps.close()
    conn.close()

    8.批处理


    多次执行数据更新操作时,可以使用批处理减少连接数据库次数,提高效率

    Statement批处理方式:
    Statement st = conn.createStatement();
    st.addBatch(更新语句1);
    st.addBatch(更新语句2);
    …..
    st.executeBatch();
    st.close();


    PreparedStatement批处理方式:
    PreparedStatement ps = conn.preparedStatement(sql);
    ps.setXXX(索引,参数值);
    … …
    ps.addbatch();
    ps.executeBatch();
    ps.close();

    作者:ki16
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    tomcat的部署的三种方式
    烤肉说
    抽象思维
    如何沟通
    如何学习
    道别信
    不要将预感抹杀
    OpenCV 用cv::IMREAD_GRAYSCALE与cv::cvtColor转灰度得到灰度图不一致问题
    Qt 文件夹不存在,创建文件夹,文件不存在,创建文件
    Qt 一个信号对应多个槽,多个信号对应一个槽的执行顺序
  • 原文地址:https://www.cnblogs.com/gaojinshun/p/10770432.html
Copyright © 2020-2023  润新知