美文网首页
JDBC 的使用

JDBC 的使用

作者: 程序员小韩 | 来源:发表于2017-09-18 09:20 被阅读0次

    JDBC

    JDBC什么是JDBC
    JDBC 的使用
    JDBC 的数据类型

    什么是JDBC

    JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。

    JDBC 的使用

    建立一个JDBC应用程序,本教程中以Java连接MySQL为一个示例:

    1. 导入包,在程序中包含数据库编程所需的JDBC类。大多数情况下,使用 import java.sql.*
    import java.sql.*;
    
    1. 注册JDBC驱动程序,需要初始化驱动程序,这样就可以打开与数据库的通信。
    Class.forName("com.mysql.jdbc.Driver");
    
    1. 打开一个连接,使用DriverManager.getConnection()方法来创建一个Connection对象,它代表一个数据库的物理连接。
    static final String USER = "root"; //用户名
    static final String PASS = "pwd123456"; //密码
    System.out.println("Connecting to database...");
    conn = DriverManager.getConnection(DB_URL,USER,PASS); //上面的名字可以自定义的  但是这里要写对
    

    4.执行一个查询, 需要使用一个类型为Statement或PreparedStatement的对象,并提交一个SQL语句到数据库执行查询。

    System.out.println("Creating statement...");
    stmt = conn.createStatement();
    String sql;
    sql = "SELECT id, first, last, age FROM Employees";
    ResultSet rs = stmt.executeQuery(sql);
    

    如果要执行一个SQL语句:UPDATE,INSERT或DELETE语句,那么需要下面的代码:

    System.out.println("Creating statement...");
    stmt = conn.createStatement();
    String sql;
    sql = "DELETE FROM Employees";
    ResultSet rs = stmt.executeUpdate(sql);
    
    1. 获取结果,可以使用适当的ResultSet.getXXX()方法来检索的数据结果。
    while(rs.next()){
        //Retrieve by column name
        int id  = rs.getInt("id");
        int age = rs.getInt("age");
        String first = rs.getString("first");
        String last = rs.getString("last");
    
        //Display values
        System.out.print("ID: " + id);
        System.out.print(", Age: " + age);
        System.out.print(", First: " + first);
        System.out.println(", Last: " + last);
    }
    
    1. 清理环境资源,在使用JDBC与数据交互操作数据库中的数据后,应该明确地关闭所有的数据库资源以减少资源的浪费,对依赖于JVM的垃圾收集。
    rs.close();
    stmt.close();
    conn.close();
    
    1. 完整示例。
    // 1. 
    import java.sql.*;
    
    public class FirstExample {
       //注册驱动
       static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
       static final String DB_URL = "jdbc:mysql://localhost/test";
    
       //数据库名和密码自己修改
       static final String USER = "username";
       static final String PASS = "password";
    
       public static void main(String[] args) {
           Connection conn = null;
           Statement stmt = null;
           try{
              // 2.
              Class.forName("com.mysql.jdbc.Driver");
              //3.
              conn = DriverManager.getConnection(DB_URL,USER,PASS);
              //4.
              stmt = conn.createStatement();
              String sql;
              sql = "SELECT id, first, last, age FROM Employees";
              ResultSet rs = stmt.executeQuery(sql);
              //5.
              while(rs.next()){
                 int id  = rs.getInt("id");
                 int age = rs.getInt("age");
                 String first = rs.getString("first");
                 String last = rs.getString("last");
                 
                 System.out.print("ID: " + id);
                 System.out.print(", Age: " + age);
                 System.out.print(", First: " + first);
                 System.out.println(", Last: " + last);
              }
              //6.
              rs.close();
              stmt.close();
              conn.close();
           }catch(SQLException se){
           // 异常不要这么处理  不好,要携带异常描述和原因。有日志要用日志输出。
              se.printStackTrace();
           }catch(Exception e){
              e.printStackTrace();// 同上
           }finally{
              try{
                 if(stmt!=null)
                    stmt.close();
              }catch(SQLException se2){
                //自定义后续处理,这里不写了
              }
              try{
                 if(conn!=null)
                    conn.close();
              }catch(SQLException se){
                 se.printStackTrace();
              }
           }
        }
    }
    

    JDBC 的数据类型

    SQL JDBC\JAVA setXXX updateXXX
    VARCHAR java.lang.String setString updateString
    CHAR java.lang.String setString updateString
    LONGVARCHAR java.lang.String setString updateString
    BIT boolean setBoolean updateBoolean
    NUMERIC java.math.BigDecimal setBigDecimal updateBigDecimal
    TINYINT byte setByte updateByte
    SMALLINT short setShort updateShort
    INTEGER int setInt updateInt
    BIGINT long setLong updateLong
    REAL float setFloat updateFloat
    FLOAT float setFloat updateFloat
    DOUBLE double setDouble updateDouble
    VARBINARY byte[ ] setBytes updateBytes
    BINARY byte[ ] setBytes updateBytes
    DATE java.sql.Date setDate updateDate
    TIME java.sql.Time setTime updateTime
    TIMESTAMP java.sql.Timestamp setTimestamp updateTimestamp
    CLOB java.sql.Clob setClob updateClob
    BLOB java.sql.Blob setBlob updateBlob
    ARRAY java.sql.Array setARRAY updateARRAY
    REF java.sql.Ref SetRef updateRef
    STRUCT java.sql.Struct SetStruct updateStruct

    在JDBC3.0中增强支持BLOB,CLOB,ARRAY,REF等数据类型。ResultSet对象可调用UPDATEBLOB(),updateCLOB(),updateArray()和updateRef()方法,使您可以在数据库服务器上直接操作相应的数据。

    对于setXXX()和updateXXX()方法,可以转换成特定的Java类型到特定的JDBC数据类型。而使用setObject()和updateObject()方法,几乎所有的Java类型映射到JDBC数据类型。

    ResultSet对象提供相应的getXXX()方法为每个数据类型来检索列值。每一种类型方法,可以使用与列名或由列的序号位置来获取列的数据。

    相关文章

      网友评论

          本文标题:JDBC 的使用

          本文链接:https://www.haomeiwen.com/subject/xeuvsxtx.html