Code Monkey home page Code Monkey logo

jdbc's Introduction

JDBC

处理 Java 应用程序中不同数据库的访问问题:可以通过它建立与数据库的连接;定义特定的客户端使之可以访问给定的数据库;提供一种能够读取、插入、更新和删除数据库中的数据项的机制;以及控制由不同SQL语句组成的事务。

JDBC 用法

  • 创建并建立与特定数据库的连接
    • 通过 Driver Manger 连接(java.sql.DriveManager)
    • 通过 JDBC 数据源连接池 连接(javax.sql.DataSource)
  • 建立连接后使用 java.sql.Connection 执行 CRUD(create/read/update/delete)操作
    • 为了执行这些操作,可以使用 java.sql.Statement 对象或 java.sql.PreparedStatement 对象。预编译对象 java.sql.PreparedStatement 对于多次执行相同的语句效率会高一些,且预编译机制可以阻止 SQL 注入

数据库连接池

通常情况下,JDBC 使用连接池来管理数据库连接。连接池有很多不同的实现方式,比如 C3P0 或 DBCP。数据库连接池是一组 JDBC 连接,当应用程序请求连接时,它会分配一个空闲连接;当应用中有任务终结时,它会释放相应的连接。

数据类型

JDBC 在使用 Java 程序中的数据之前,JDBC 会将 Java 数据类型转换成相对应的 JDBC 数据类型,它们之间有一个默认的对应关系,能够保证在不同的数据库实现和驱动之间的一致性。

SQL JDBC/Java setter getter
VARCHAR java.lang.String setString getString
CHAR java.lang.String setString getString
LONGVARCHAR java.lang.String setString getString
BIT boolean setBoolean getBoolean
NUMERIC BigDecimal setBigDecimal getBigDecimal
TINYINT byte setByte getByte
SMALLINT short setShort getShort
INTEGER int setInt getInt
BIGINT long setLong getLong
REAL float setFloat getFloat
FLOAT float setFloat getFloat
DOUBLE double setDouble getDouble
VARBINARY byte[] setBytes getBytes
BINARY byte[] setBytes getBytes
DATE java.sql.Date setDate getDate
DATETIME java.sql.Timestamp setTimestamp getTimestamp
TIMESTAMP java.sql.Timestamp setTimestamp getTimestamp
CLOB java.sql.Clob setClob getClob
BLOB java.sql.Blob setBlob getBlob
ARRAY java.sql.Array setARRAY getARRAY
REF java.sql.Ref setRef getRef
STRUCT java.sql.Struct setStruct getStruct

SQL 和 Java 对于空值(null)有不同的处理方式。在使用SQL处理一些Java 中的空值时,我们最好能够遵循一些最佳实践,比如避免使用基本数据类型,因为它们默认值不能为空而是会依据具体类型设定默认值,比如int型默认值为0、布尔型(boolean)默认值为false,建议使用包装类

SQL 日期类型的处理

  1. 字段类型为 Date 使用 java.sql.Date.valueOf(java.lang.String) 格式是 YYYY-MM-dd

    ps.setDate(2, java.sql.Date.valueOf("2019-03-04"));
    // 设置为当前日期
    // 方式一: 
    ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));
    // 方式二: 
    ps.setDate(2, new java.sql.Date(new Date().getTime());
  2. 字段类型为 TIMESTAMPDATETIME 使用 java.sql.Timestamp.valueOf(java.lang.String)

    ps.setTimestamp(2, java.sql.Timestamp.valueOf("2019-03-04 13:30:00");
    // 设置为当前时间
      // 方式一:
    ps.setTimestamp(2, new java.sql.Timestamp(new Date().getTime()));
    
    // 方式二:
    ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));
    
    // Java 8 
    ps.setTimestamp(2, java.sql.Timestamp.from(java.time.Instant.now()));
    ps.setTimestamp(2, java.sql.Timestamp.valueOf(java.time.LocalDateTime.now()));
    
    LocalDate localDate = LocalDate.now(ZoneId.of("Asia/Shanghai"));
    ps.setObject(1, localDate);

驱动程序

JDBC 驱动管理器 java.sql.DriverManager 的主要功能就是:获取当前可用的驱动列表;处理特定的的驱动程序和数据库之间的连接。

注册驱动程序

  • registerDriver() : 需要保证驱动程序在编译时就是可用的
  • Class.forName() 推荐使用 : 不需要驱动程序在编译时是可用的

Carbonize 2019-04-13 at 11.25.20

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.