• JDBC的简单使用


    JDBC

    全称:java 数据库连接 - java database connectivity standard。

    JDBC是java语言用于访问数据库的应用编程接口API,通过它可访问各类关系数据库。

    知识要点:

    • JDBC简介
    • JDBC类和接口
    • JDBC调用存储过程
    • LOB的读写
    • JDBC事务

    JDBC简介

    两层组成:

    • 上面一层JDBC API,负责与JDBC驱动程序管理器API进行通信。
    • 下面一层驱动程序管理器API,它与实际链接到数据库、由供应商提供的数据库驱动程序进行通信,并且返回查询的信息,或者执行由查询规定的操作。

    使用JDBC可以方便的将SQL语句传递给几乎任何一种数据库。使用JDBC写的程序可以传给相应的数据库管理系统DBMS。

    JDBC 类和接口

    java.sql包中提供的常用类和接口。

    java.sql包中提供了JDBC中核心的常用类、接口和异常。


    用户使用JDBC的主要操作:与数据库建立连接、执行SQL语句、处理结果等,主要涉及DriverManager类、Connection接口、Statement接口、PreparedStatement接口和ResultSet接口。

    DriverManager类

    DriverManager类是JDBC的管理层,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。

    DriverManager.getConnection建立与数据库的链接。

    要使用JDBC来存取特定的数据库,必须有相应的JDBC driver,是链接JDBC API 与具体数据库之间的桥梁。

    java程序首先使用API来与JDBC DriverManager交互,由manager载入指定的JDBC driver,此后就可以通过JDBC API来存取数据库。

    本地协议纯java驱动程序

    JDBC转化为数据库直接使用的网络协议,不需要安装客户端软件,使用java sockets来连接数据库。

    Connection接口

    Connection对象代表特定数据库的链接(会话)。通过DriverManager类的静态方法,getConnection()方法可以获取Connection接口的实现类对象。

    • static Connection getConnection (String url)

    • static Connection getConnection(String url, Properties info)

    • static Connection getConnection(String url, String user, String password);

    Statement接口

    Statement对象用于将SQL语句发送到数据库中,执行对数据库的数据的检索或者更新。

    两个子接口:CallableStatement和PreparedStatement。

    • Statement createStatement():创建一个Statement对象来将sql语句发送到数据库
    • Statement createStatement(int resultSetType, int resultSetConcurrency): 创建一个Statement对象,该对象生成具有给定类型和并发性的ResultSet对象。
    • Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability):创建一个Statement对象,该对象生成具有给定类型和并发性和可保存性的ResultSet对象。

    PreparedStatement接口

    Statement主要执行静态的SQL语句。如果有些操作只是用来SQL语句中某些参数不同,其余SQL子句相同,则可用PreparedStatement来提高执行效率。可以使用Connection的PreparedStatement()方法建立好一个预先编译的SQL语句:其中参数变动的地方先用?作为占位符,等到真正指定参数执行时,在使用相应的setXXX(int parameterIndex, 值)方法,指定?处真正应该有的参数值。

    ResultSet接口

    包含了SQL语句中条件的所有行,并且通过一套get()方法提供了对这些行中数据的访问,这些get()方法可以访问当前行中的不同列。ResultSet.next()方法用于移动到ResultSet中的下一行,使下一行成为当前行。

    JDBC规范中提供了数据库类型与JAVA类型关系对应表。

    JDBC操作sql

    步骤:

    1. 创导与SQL相关的包

      import java.sql.*;

    2. 加载JDBC驱动程序

      根据不同的数据库加载对应厂商提供的驱动程序。把厂商提供的驱动程序JAR包添加到classpath,在代码中显式加载数据库驱动程序类。加载完数据库驱动程序类后,驱动程序会自动通过DriverManager.registerDriver()方法注册,这样就可以与厂商的驱动程序通信了。

      常见驱动程序全名:

      • MySQL:com.mysql.jdbc.Driver
      • SQL Server: com.microsoft.sqlserver.jdbc.SQLServerDriver
      • Oracle: oracle.jdbc.driver.OracleDriver.
    3. 提供链接URL

      链接URL定义了链接数据库时的协议、子协议、数据源识别。

      形式为:“协议:子协议:数据源识别”

      协议在JDBC中总是以jdbc开始;子协议是桥接的驱动程序或是数据库管理系统名称,mysql对应的就是“mysql”;”数据源识别“标出找出数据库来源的地址与链接端口

      mysql的链接URL:jdbc:mysql://主机名称:链接端口/数据库名称?参数=参数值&参数=参数值。

      jdbc:mysql://localhost:3306/db1?user=root&password=123&useUnicode=true&characterEncoding=GBK;

    4. 建立一个数据库的链接

      需要向DriverManager要求并获得Connection镀锡,一个Connection对象代表一个数据库连接。

      使用DriverManager的getConnection()方法传入指定的连接URL、用户名和密码来过得。

      String url = "jdbc:mysql://localhost:3306/db1";
      Connection conn = DriverManager.getConnection(url, "root", "root"); 
      
    5. 创建一个Statement对象

      Statement对象是SQL叙述的具体代表对象。

      Statement stmt = conn.createStatement();

    6. 执行SQL语句

      获得Statement对象后可以使用方法去执行SQL。

      • int excecuteUpdate(String sql):执行改变数据库内容的SQL,如insert、update、delete,返回操作影响到的记录数。

      • java.sql.RusultSet executeQuery(String sql):执行查询数据库的SQL,如SELECT语句,返回查询到的结果集ResultSet对象。

        int rows = stmt.executeUpdate("insert into db1;");
        Result rs = stmt.executeQuery("select * from db1;");
        
    7. 处理结果

      ResultSet是数据库结果集的数据表。Result对象具有指向当前行的光标。最初在第一行。

      可以使用ResultSet的next()方法来移动光标到下一行,它会返回true和false表示是否有下一行记录。

      两种方式获得当前行获取指定列的值:

      • getXXX(int columnIndex) :使用列索引获取值,列从1开始编号。
      • getXXX(String columnLabel):使用列的名称获取值。
    8. 关闭JDBC对象

      操作完成需要把所使用的JDBC对象全部显示关闭释放JDBC资源 。

      • 调用ResultSet的close()方法
      • 调用Statement的close()方法
      • 调用Connection的close()方法

    JDBC基本示例

    package JDBC;
    
    import java.sql.Connection;
    import java.sql.Driver;
    import java.sql.DriverManager;
    import java.sql.Statement;
    
    public class MyJdbcTest {
        public static void main(String[] args) throws Exception {
            // 1.导入驱动jar包
            // 2.注册驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 3.获取数据库连接对象
            Connection cnnt = DriverManager.getConnection("jdbc:mysql://localhost:3306/newtest?characterEncoding=utf-8&serverTimezone=UTC", "root", "password");
            // 4.定义sql语句
            String sql = "update student set id = 22,age = 18,name = 'deng' where id = 1";
            // 5. 创建执行sql语句的对象Statement
            Statement stmt = cnnt.createStatement();
            // 6.执行SQL
            int count = stmt.executeUpdate(sql);
            // 7.处理结果
            System.out.println(count);
            //8.释放资源
            stmt.close();
            cnnt.close();
    
        }
    
    }
    
    
  • 相关阅读:
    Java补漏(一)
    PHP实现程序单例执行
    zabbix 配置外部邮件server发送邮件报警
    HTML+JavaScript实现链式运动特效
    对思归者的建议
    去除Notepad++打开文件后文字下面出现红色波浪线的问题
    ANSI是什么?
    Eclipse各版本代号一览表以及官网上有很多版本的eclipse,下载哪个版本比较合适呢?
    Java语言的发展史
    win10 64位JLink v8固件丢失修复总结
  • 原文地址:https://www.cnblogs.com/DengSchoo/p/12877856.html
Copyright © 2020-2023  润新知