zoukankan      html  css  js  c++  java
  • JBCD技术

    定义

    官方定义:JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

      可以理解为:JDBC技术就是用来解决java程序与数据库之间的连接问题。

    连接步骤

    java 连接数据库的步骤 :

      1、需要获取数据库厂商提供的驱动文件 (不同的数据库厂商会提供各自的数据库驱动包)

      2、数据库是否可以启动

      3、把驱动文件导入到项目中

      4、加载驱动文件中的类到内存中

      5、创建Connection对象(java.sql包中的一个接口),作用:连接数据库,建立管道

        需要提供创建连接项的基本信息,如:数据库的ip地址,端口号,库名,用户名,密码

      6、创建预编译对象 PreparedStatement 包 ;根据连接项对象进行创建的

      7、创建结果集对象 ResultSet 包 ;通过next();命令控制指针指向下一条

      8、对数据库中 表中的数据实现 :增删改查 ;

      9、数据持久化

        将数据库中获取到的数据,存到java的对象中,当多次需要该数据时,不需要重复访问数据库,

        只要访问该对象,就可以获取数据;

      10、通过配置文件获取连接项 ,实现增删改查

        1、什么是配置文件

        2、在项目中怎么创建配置文件

        3、怎么给配置文件添加数据

        4、在java程序中 连接配置文件

        5、创建连接项方法

          1、获取配置文件里的信息

          2、拼接成连接数据库的信息

          3、获取驱动类

          4、判断数据库类型

          5、创建连接项

        6、创建关闭方法(提供要关闭对象的形参)

          1、通过传递进来的对象,根据判断进行关闭

      11、测试 :创建连接项(通过DBUtils.getConnection)

    总结

    连接步骤:

      1、获取并导入数据库连接的驱动文件

      2、加载驱动类(Class.forName("包名.类名"))

      3、创建connection的对象(驱动类来创建的)

      4、创建数据库的操作对象:A) Statement

                    B) PreparedStatement

                    C) CallableStatement

              Statement优点:可以建库建表,但是不允许使用Statement对表做增删改查

                    缺点:1、有sql注入问题 2、不能够插入特殊类型的数据3、速度比较慢

            数据库中存储二进制文件的格式是:mysql  -- longblob

                            Oracle  -- BLOB

                       大文本      mysql  --  longText

                            Oracle  --  CLOB

              PreparedStatement优点:1、预编译速度快 2、能够插入特殊类型的数据 3、屏蔽了部分的sql注入问题

              CallableStatement 存储过程相当于数据库中的方法,而大多的金融类公司都会把主要的算法和业务逻辑封装到数据库中,安全并且易修改。

     1 public class DBUtils {
     2 
     3     private static Properties p = new Properties();
     4     static{
     5         try {
     6             p.load(DBUtils.class.getResourceAsStream("init.properties"));
     7         } catch (IOException e) {
     8             System.out.println("获取配置文件失败");
     9         }
    10     }
    11     public static Connection getConnection(){
    12         Connection conn = null;
    13         String ip = p.getProperty("ip").toLowerCase().trim();
    14         String port = p.getProperty("port").toLowerCase().trim();
    15         String dbname = p.getProperty("dbname").toLowerCase().trim();
    16         String dbtype = p.getProperty("dbtype").toLowerCase().trim();
    17         String username = p.getProperty("username").toLowerCase().trim();
    18         String password = p.getProperty("password").toLowerCase().trim();
    19         if(dbtype.equals("oracle")){
    20             try {
    21                 Class.forName("oracle.jdbc.driver.OracleDriver");
    22             } catch (ClassNotFoundException e) {
    23                 System.out.println("加载驱动包失败");
    24             }
    25             String str = "jdbc:oracle:thin:@"+ip+":"+port+":"+dbname;
    26             try {
    27                 conn = DriverManager.getConnection(str,username,password);
    28             } catch (SQLException e) {
    29                 System.out.println("连接数据库失败");
    30             }
    31         }
    32         return conn;
    33     }
    34     public static void close(Connection conn,PreparedStatement pst,ResultSet rs){
    35         if(conn != null){
    36             try {
    37                 conn.close();
    38             } catch (SQLException e) {
    39                 e.printStackTrace();
    40             }
    41         }
    42         if(pst != null){
    43             try {
    44                 pst.close();
    45             } catch (SQLException e) {
    46                 e.printStackTrace();
    47             }
    48         }
    49         if(rs != null){
    50             try {
    51                 rs.close();
    52             } catch (SQLException e) {
    53                 e.printStackTrace();
    54             }
    55         }
    56     }
    57 }
    View Code
  • 相关阅读:
    Windows10下Opencv4+CMake+MinGW64+VSC安装教程
    相机标定问题-实践操作流程
    eNSP仿真学习,网络入门!
    SFTP服务的使用!!
    树莓派B+使用入门&RPI库安装&wringPi库安装
    Python基本语法初试
    基于51单片机+DAC0832的信号发生器
    各种标志位的含义
    根文件系统ramdisk.image.gz && uramdisk.image.gz
    Linux中/etc/inittab文件
  • 原文地址:https://www.cnblogs.com/coffeerun/p/5806693.html
Copyright © 2011-2022 走看看