IT教程 ·

浅谈相识JDBC

Animate.css动画库,简单的使用,以及源码剖析

媒介

Java数据库衔接,是Java言语中用来范例客户端程序怎样来接见数据库的运用程序接口,供应了诸如查询和更新数据库中数据的要领。JDBC也是Sun Microsystems的商标。JDBC是面向关联型数据库的。 在J2SE中,供应了一个称之为JDBC-ODBC桥的API。

​ --维基百科

sun公司供应的java衔接数据库的范例,包含一些罕见的数据库,MySQL Oracle等。

要想经由过程IDEA竖立项目衔接借助JDBC运用mysql数据库等,这里以我运用的MySQL数据库为例,

浅谈相识JDBC IT教程 第1张

要下载好相应的jar包,这在官网中都能够找到。经由过程IDEA的导包,将其添加到地点的项目列内外,就能够运用JDBC。

浅谈相识JDBC IT教程 第2张

作用

JDBC就是关于java代码来讲,在运用程序和数据库之间的一个中心层 API,也就是中心商;JDBC许可操纵者根据所须要的情势去接见猎取数据库信息,能够举行查询,有点相似那些数据库可视化软件的部份功用,同时支撑更新指令,处置惩罚其相应并返回效果。

JDBC的架构

分为了三层和两层架构;

  1. 三层架构,中心相较于两层架构,多一个运用服务层,辨别条理就是为了相符”高内聚,低耦合“的头脑,能够降低层与层之间的依靠,削减依靠性,开发人员能够只用关注某一层。

    浅谈相识JDBC IT教程 第3张

  2. 双层架构

    这类架构,支撑直接衔接数据库举行操纵,这类架构,效力会高许多,因为直接接见数据库,然则偶然保护本钱和时候会增添,相关于三层可靠性和安全性会短缺一些

    浅谈相识JDBC IT教程 第4张

下面讲一下一些操纵步骤。

步骤

检察,比较细致,不过是全英文的,能够翻译来看看。

  1. 注册驱动
    //如许写是由问题的,内里的Driver类有静态代码块会自动注册了很轻易形成二次注册,没必要二次注册
    //DriverManager.registerDriver(new com.mysql.jdbc.Driver());
    Class.forName("com.mysql.jdbc.Driver");//内里加的是全途径
    //返回与给定字符串称号的类或接口相关联的类对象。 挪用此要领相当于: 
    //Class.forName(className, true, currentLoader) 
    //个中currentLoader示意当前类的定义类加载器。 
  2. 竖立衔接
    //这里我一开始的写法没有加上useSSL和时区,致使IDEA报错,这里写成如许会比较好一点
    DriverManager.getConnection("jdbc:mysql://localhost:3306/myemployees?useSSL=false&serverTimezone=Asia/Shanghai",'user','password');
    //这里运用这类花样以后,我把加载驱动程序的class.forName诠释掉了,都是能够运用的,只是会涌现正告
  3. 竖立statement
    //添补sql语句
    PreparedStatement pre = con.prepareStatement("select * from employees where first_name = 'Lex';");
    
  4. 实行sql语句,取得resultSet
    //executes sql 
    //这里运用了 ResultSet 的executeQuery()要领,实行查询的sql语句,并返回效果
    ResultSet rs = pre.executeQuery();
  5. 遍历获得所需的效果
    //和遍历文件的输出输入流一样
    //能够运用一样的框架
    //@param getString要领中的参数就是columnLabel(下面我所运用的salary字段)运用SQL AS子句指定的列的标签。假如未指定SQL AS子句,则标签为列的称号
       while (rs.next()){
                System.out.println("输出:"+rs.getString("salary"));//因而返回的是查询salary的内容
            }
    
  6. 封闭,开释资本
    //Statement stmt = null;
    //ResultSet rs = null;
    //下面是官方文档中引荐的开释资本的写法
    if (rs != null) {
            try {
                rs.close();
            } catch (SQLException sqlEx) { } // ignore
    
            rs = null;
        }
    
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException sqlEx) { } // ignore
    
            stmt = null;
  • 完全代码
package mysql;

import java.sql.*;

/**
 * @Author: yhy
 * @Date: 2020/2/27
 * @Time: 20:53
 */
public class ConFirst {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
 //        register
        Class.forName("com.mysql.cj.jdbc.Driver");
    //    DriverManager.registerDriver(new com.mysql.jdbc.Driver());

//        connect message
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myemployees?useSSL=false&serverTimezone=Asia/Shanghai","user","password");
//        sql statement
        PreparedStatement pre = con.prepareStatement("select * from employees where first_name = 'Lex';");
//        accept the result
        ResultSet rs = pre.executeQuery();
        while (rs.next()){
            System.out.println("输出:"+rs.getString("salary"));
        }
//        close the resource
        //应当根据官方那样写,我这里偷懒没写细致
        rs.close();
        con.close();
    }


}

JDBC罕见的关键字诠释

  • DriverManager: 这个类治理数据库驱动程序的列表。内容是不是相符从Java运用程序运用的通讯子协定准确的数据库驱动程序的衔接请求。辨认JDBC在一定子协定的第一个驱动器将被用来竖立数据库衔接。
  • Driver: 此接口处置惩罚与数据库服务器通讯。很少直接驱动程序对象.
    //        每一个驱动程序类必需完成的接口。
    //        Java SQL框架许可多个数据库驱动程序。
    //        每一个驱动程序都应当供应一个完成Driver接口的类。
    //        DriverManager将尝试加载尽量多的驱动程序,然后关于任何给定的衔接请求,它会顺次请求每一个驱动程序           尝试衔接到目的URL。
    //        强烈建议每一个Driver类应当是小型且自力的,以便能够加载和查询Driver类,而不须要大批的支撑代码。 
  • Connection : 此接口与打仗数据库的一切要领。衔接对象示意通讯上下文,即,与数据库中的一切的通讯是经由过程唯一的衔接对象。
  • Statement:用于实行静态SQL语句并返回其生成的效果的对象。竖立实行SQL语句的衔接中心人。
  • SQLException: 这个类处置惩罚发生在一个数据库运用程序的任何毛病,供应有关数据库接见毛病或其他毛病的信息的非常,而且每一个都供应了信息,包含了形貌毛病的字符串
  • ResultSet:示意数据库效果集的数据表,平常经由过程实行查询数据库的语句生成。ResultSet对象坚持一个光标指向其当前的数据行。最初,光标位于第一行之前。 next要领将光标移动到下一行,而且因为在ResultSet对象中没有更多行时返回false,因而能够在while轮回中运用轮回来遍历效果集。运用以后平常挑选close。

从2019-nCoV趋势预测问题,联想到关于网络安全态势预测问题的讨论

参与评论