zoukankan      html  css  js  c++  java
  • JDBC:JDBC 的启动和运行

    1 数据准备 

    -- 创建 jdbc_user表 
    CREATE TABLE jdbc_user (
      id INT PRIMARY KEY AUTO_INCREMENT ,
      username VARCHAR(50),
      PASSWORD VARCHAR(50),
      birthday DATE 
    );
    
    -- 添加数据 
    INSERT INTO jdbc_user (username, PASSWORD,birthday)
    VALUES('admin1', '123','1991/12/24'), 
    ('admin2','123','1995/12/24'),
    ('test1', '123','1998/12/24'), 
    ('test2', '123','2000/12/24'); 

    2 MySql驱动包

      1. 将MySQL驱动包添加到jar包库文件夹中,Myjar文件夹,用于存放当前项目需要的所有jar包

      

       2. 在 idea中 配置jar包库的位置

           

           

            3. 创建一个新的项目jdbc_task01, 配置jar包库

        

    3 API使用

      1.注册驱动

        JDBC规范定义驱动接口: java.sql.Driver 

        MySql驱动包提供了实现类: com.mysql.jdbc.Driver 

    加载注册驱动的方式

    描述

    Class.forName(数据库驱动实现类)

    加载和注册数据库驱动,数据库驱动由数据库厂商MySql提供 "com.mysql.jdbc.Driver"

          

    1) 代码示例     

    public class JDBCDemo01 {
     
        public static void main(String[] args) throws ClassNotFoundException {
     
            //1.注册驱动        
            // forName 方法执行将类进行初始化            
            Class.forName("com.mysql.jdbc.Driver");
     
        } 
    }

    2) 为什么这样可以注册驱动?  

     我们知道 Class类的forName方法 ,可以将一个类初始化, 现在我们一起看一下Driver类的 源码

          

    // Driver类是MySql提供的数据库驱动类, 实现了JDBC的Driver接口  java.sql.Driver
    
    public class Driver extends NonRegisteringDriver implements java.sql.Driver {
        // 空参构造 
        public Driver() throws SQLException {    }
    
        
        //静态代码块,Class类的 forName()方法将Driver类 加载到内存, static代码块会自动执行  
        static {
            try {
                /*
                    DriverManager 驱动管理类
                    registerDriver(new Driver) 注册驱动的方法
                    注册数据库驱动
                */
                DriverManager.registerDriver(new Driver());
            } catch (SQLException var1) {
                throw new RuntimeException("Can't register driver!");            
            }    
    } 

    注:

      从 JDBC3 开始,目前已经普遍使用的版本,可以不用注册驱动而直接使用。 Class.forName 这句话可以省略。 

      

      2.获得连接

        Connection 接口,代表一个连接对象 ,具体的实现类由数据库的厂商实现 

        使用 DriverManager类的静态方法,getConnection可以获取数据库的连接

    获取连接的静态方法

    说明

    Connection getConnection(String url, String user, String password)

    通过连接字符串和用户名,密码来获取数据 库连接对象

    1) getConnection方法 3个 连接参数说明

    连接参数 

    说明

    user

    登录用户名

    password

    登录密码

    url


    mySql URL的格式 jdbc:mysql://localhost:3306/db4

    2)   对URL的详细说明

          

    jdbc:mysql://localhost:3306/db4?characterEncoding=UTF-8
    •       JDBC规定url的格式由三部分组成,每个部分中间使用冒号分隔
      •                    第一部分是协议 jdbc,这是固定的
      •                         第二部分是子协议,就是数据库名称,连接mysql数据库,第二部分当然是mysql了; 
      •                         第三部分是由数据库厂商规定的,我们需要了解每个数据库厂商的要求,mysql的第三部分分别由数据 库服务器的IP地址(localhost)、端口号(3306),以及要使用的 数据库名称 组成。

                

    3) 代码示例

    public class JDBCDemo02 {
     
        public static void main(String[] args) throws Exception {
     
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
     
            //2.获取连接 url,用户名, 密码
            String url = "jdbc:mysql://localhost:3306/db4";        
            Connection con = DriverManager.getConnection(url, "root", "123456");
     
            //com.mysql.jdbc.JDBC4Connection@2e3fc542        
            System.out.println(con);
        }
    }

     3.获取语句执行平台

        通过Connection 的 createStatement方法 获取sql语句执行对象

    Connection接口中的方法

    说明

    Statement  createStatement()

    创建 SQL语句执行对象

        

        Statement : 代表一条语句对象,用于发送 SQL 语句给服务器,用于执行静态 SQL 语句并返回它所生成结 果的对象。

    Statement类 常用方法

    说明

    int executeUpdate(String sql);

    执行insert update delete语句.返回int类型,代表受影响的行 数

    ResultSet executeQuery(String sql);

    执行select语句, 返回ResultSet结果集对象

        代码示例

    public class JDBCDemo03 {
     
        public static void main(String[] args) throws Exception {
     
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
     
            //2.获取连接 url,用户名, 密码
            String url = "jdbc:mysql://localhost:3306/db4";        
            Connection con = DriverManager.getConnection(url, "root", 
            "123456");
     
            //3.获取 Statement对象
            Statement statement = con.createStatement();
     
            //4.执行创建表操作
            String sql = "create table test01(id int, name varchar(20),age int);";
    
            //5. 增删改操作 使用executeUpdate,增加一张表
            int i = statement.executeUpdate(sql);
    
             //6. 返回值是受影响的函数
             System.out.println(i);
    
             //7.关闭流
             statement.close(); 
             con.close();
        }
    }

      4.处理结果集 

          只有在进行查询操作的时候, 才会处理结果集

    代码示例

    public class JDBCDemo04 {
     
        public static void main(String[] args) throws SQLException {
     
            //1.注册驱动 可以省略
     
            //2.获取连接
            String url = "jdbc:mysql://localhost:3306/db4";        
            Connection con = DriverManager.getConnection(url, "root", "123456");
     
            //3.获取 Statement对象
            Statement statement = con.createStatement();
     
            String sql = "select * from jdbc_user";
    //执行查询操作,返回的是一个 ResultSet 结果对象 ResultSet resultSet = statement.executeQuery(sql); //4.处理结果集 resultSet
         // 见下篇
    } }
  • 相关阅读:
    c/c++生成预编译文件
    (转)vim 访问系统剪贴板
    vim 使用、设置笔记
    使用cygwin注意事项二
    (转)使用cygwin注意事项一
    cygwin Could not create directory '/home/Administrator/.ssh'
    Linux 学习笔记 文件权限
    Linux 学习笔记 Linux环境变量初稿
    Linux 学习笔记 更多的bash shell命令
    Linux 学习笔记 查看文件内容诸多命令
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/15039430.html
Copyright © 2011-2022 走看看