zoukankan      html  css  js  c++  java
  • JDBC使用步骤

    JDBC代表Java与数据库的连接,这对Java编程语言和广泛的数据库之间独立于数据库的连接标准的Java API,其允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的数据。

    JDBC分为双层架构和三层架构

    sql API  https://docs.oracle.com/javase/8/docs/api/index.html

    JDBC常用接口和类

    1 public class DriverManager extends Object  //这个类管理数据库驱动程序的列表,查看加载的驱动是否符合JAVA Driver API的规范
    2 public interface Connection extends Wrapper, AutoCloseable  //与数据库中的所有的通信是唯一的的连接对象
    3 public interface Statement extends Wrapper, AutoCloseable  //
    4 public interface PreparedStatement extends Statement //
    5 public interface CallableStatement extends PreparedStatement  //
    6 public interface ResultSet extends Wrapper, AutoCloseable  //一个迭代器,用于检索查询数据

    JDBC驱动的下载及配置

    驱动的版本要和本地安装的 MySQL 的版本相匹配。

    MySQL8 的驱动名称是 com.mysql.cj.jdbc.Driver

    MySQL8 以下的驱动名称为 com.mysql.jdbc.Driver

    Java定义了接口,不同数据库厂商具体实现

    https://dev.mysql.com/downloads/connector/j/

    下载解压后得到 JAR 包,其命名格式为 mysql-connector-java-version.jar

    需要将该 JAR 导入到项目中,以 Intelli IDEA 为例向项目中导入该 JAR 包

    选择 File --> Project Structure --> Modules --> 右侧 “+” --> JARs or directories --> 找到该 jar 包的路径 --> OK

    JDBC编程步骤(六个步骤)

    第一步 导入包(与JDBC相关的类都在java.sql包中)并加载相应的数据库驱动(使用反射技术)

    1 import java.sql.*;  // 导入JDBC相关的类
    2 Class.forName(driverClass) 3 Class.forName("com.mysql.cj.jdbc.Driver") // 加载MySql驱动。固定写法

    第二步 获得数据库连接(使用DriverManager的静态方法getConnection(String url, String name, String password))

    1 static final String USER = "user";
    2 static final String PASSWORD = "password";
    3 Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/databaseName", USER, PASSWORD);

    第三步 创建Statement或PreparedStatement对象(使用Connection中的方法)

    1 Statement stat = conn.createStatement();
    2 PreparedStatement prestat = conn.prepareStatement(String sql);

    第四步 执行sql语句,得到结果数据集

     1 // 使用Statement
     2 // QUERY 使用Statement类的executeQuery(sql)方法
     3 ResultSet  rs = stmt.executeQuery(sql);
     4 // UPDATE INSERT DELETE 使用Statement类的executeUpdate(sql)方法
     5 int rs = stmt.executeUpdate(sql);
     6 
     7 // 使用PrepareStatement
     8 // QUERY 使用PrepareStatement类的executeQuery()方法
     9 ResultSet  rs = preStmt.executeQuery();
    10 // UPDATE INSERT DELETE 使用PrepareStatement类的executeUpdate()方法
    11 int rs = stmt.executeUpdate();

    第五步 对于查询,处理数据集(使用ResultSet的next()和getXxx()方法)

    1 while(rs.next()){
    2     int id = rs.getInt("id");
    3     int age = rs.getInt("age");
    4     String first = rs.getString("first");
    5     String last = rs.getString("last");
    6 }    

    第六步 关闭数据库链接资源 ResultSet、Statement、PrepareStatement、Connection都要依次关闭

    1 result.close();
    2 stat.close();
    3 preStat.close();
    4 conn.close();

     一个完整的例子

    mysql-connector-java-8.0.13.jar 需要事先放到 build path 中

    import java.sql.*;
    import java.util.Properties;
    
    public class DemoJdbc {
        public static void main(String [] args) throws Exception{
            Properties properties = new Properties();
            properties.setProperty("user", "leon");
            properties.setProperty("password", "1234567");
            properties.setProperty("useSSL", "false");
            properties.setProperty("autoReconnect", "true");
            String userName = "leon";
            String password = "1234567";
            String url01 = "jdbc:mysql://localhost:3306/test";  // test是数据库名称
    // String url01 = "jdbc:mysql://127.0.0.1:3306/test"
    String url02 = "jdbc:mysql://localhost:3306/test?useSSL=false"; String driver = "com.mysql.cj.jdbc.Driver"; // 固定格式 Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { Class.forName(driver); conn = DriverManager.getConnection(url01,properties); // conn = DriverManager.getConnection(url02,userName, password); stmt = conn.prepareStatement("select * from sc where sno = ?"); stmt.setInt(1, 2018007); rs = stmt.executeQuery(); while (rs.next()){ System.out.println(rs.getInt("sno") + " " + rs.getString("cno") + " " + rs.getInt("scgrade")); } }catch (SQLException e ){ e.printStackTrace(); } finally { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } } }

    执行结果

  • 相关阅读:
    Python从入门到精通之First!
    如果你不懂计算机语言,那么就请你不要说你是学计算机的!!好丢人。。。
    shell脚本-编程前奏-小工具之grep(文本处理)
    实战之授权站点漏洞挖掘-git信息泄漏
    实战之授权站点漏洞挖掘-CVE-2015-2808
    实战之授权站点漏洞挖掘-HTTP.sys远程代码执行
    实战之授权站点漏洞挖掘-CVE-1999-0554
    实战之授权站点漏洞挖掘-CORS
    实战之授权站点漏洞挖掘-越权
    实战之授权站点漏洞挖掘-url重定向
  • 原文地址:https://www.cnblogs.com/0820LL/p/9563883.html
Copyright © 2011-2022 走看看