JDBC编程

步骤

  1. 加载驱动
  2. 用户信息和URL
  3. 连接
  4. 执行sql的对象
  5. 执行sql
  6. 关闭连接


源代码

package com.cheng.lesson01;

import java.sql.*;

public class JdbcDemo01 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1、加载驱动
        Class.forName("com.mysql.jdbc.Driver");

        //2、用户信息和URL
        String url = "jdbc:mysql://localhost:3306/data?useUnicode=true&characterEncoding=utf8&useSSL=false";
        String username = "root";
        String password = "/*密码*/";

        //3、连接成功,数据库对象, Connection代表对象
        Connection connection = DriverManager.getConnection(url,username,password);

        //4、执行SQL的对象 Statement
        Statement statement = connection.createStatement();

        //5、执行sql的对象去执行sql
        String sql = "SELECT * FROM user";

        ResultSet resultSet = statement.executeQuery(sql); //返回的结果集,封装了全部查询出的结果

        while (resultSet.next()){
            System.out.println("account=" + resultSet.getObject("u_account"));
            System.out.println("password=" + resultSet.getObject("u_passwd"));
        }

        //6、释放连接
        resultSet.close();
        statement.close();
        statement.close();
    }
}


一些细节及对象解释

  1. 一个WARNING:Establishing SSL connection without server's identity verification is not recommended.
    原因是在MySQL 5.5.45+、5.6.26+和5.7.6+等版本中,不建议在没有服务器身份验证的情况下建立SSL连接。
    解决办法是禁用SSL,即useSSL=false

  2. DriverManager
    加载驱动时完整写法如下,但建议不写第一句

DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver");

因为Driver类中已有注册驱动的静态代码块

public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    public Driver() throws SQLException {
    }

    static {
        try {
            DriverManager.registerDriver(new Driver());
        } catch (SQLException var1) {
            throw new RuntimeException("Can't register driver!");
        }
    }
}
Connection connection = DriverManager.getConnection(url,username,password);

//connection代表数据库
//事务回滚、提交、设置自动提交
connection.rollback();
connection.commit();
connection.setAutoCommit();

  1. URL
String url = "jdbc:mysql://localhost:3306/data?useUnicode=true&characterEncoding=utf8&useSSL=false";

//mysql默认端口号3306
//jdbc:mysql://主机地址:端口号/数据库名?参数1&参数2&参数3

//oracle默认端口号1521
//jdbc:oracle:thin:@localhost:1521:sid

  1. Statement执行sql的对象(PreparedStatement)
String sql = "SELECT * FROM user";//编写sql
        
statement.executeQuery();//查询操作 返回ResultSet
statement.execute();//执行任何SQL
statement.executeUpdate();//更新、插入、删除,返回受影响的行数

  1. ResultSet
    获得指定的数据类型
ResultSet resultSet = statement.executeQuery(sql); //返回的结果集,封装了全部查询出的结果
resultSet.getObject();//在不知道列的类型的情况下使用
//如果知道列的类型就使用指定的类型
resultSet.getString();
resultSet.getInt();
resultSet.getFloat();
resultSet.getDate();

遍历、指针

resultSet.beforeFirst();//移动到最前面
resultSet.afterLast();//移动到最后面
resultSet.next();//移动到下一个数据
resultSet.previous();//移动到前一行
resultSet.absolute(row);//移动到指定行

  1. 释放资源
    不释放比较占用内存……
posted @ 2021-02-23 01:30  Jessi_c  阅读(88)  评论(0)    收藏  举报