您当前的位置: 首页 >  Java

彭世瑜

暂无认证

  • 0浏览

    0关注

    2791博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java学习路线-40:Java数据库编程基础操作

彭世瑜 发布时间:2020-01-05 12:32:47 ,浏览量:0

第36 章 : Java数据库编程基础操作 156 JDBC简介

JDBC 属于一种服务,所有服务都必须按照指定的流程进行操作 Java Database Connectivity 开发包 java.sql 核心组成 DriverManager 接口 Connection、Statement、PreparedStatement、ResultSet

四种连接方式: JDBC-ODBC 桥连接 JDK支持,性能较差 JDBC 一般只连接本地服务 JDBC网络连接 连接网络数据库 JDBC协议连接

157 连接MySQL数据库

需要配置驱动程序路径 通过反射机制加载数据库驱动程序类 整个JDBC设计实现的就是一个工厂类

pom.xml


    mysql
    mysql-connector-java
    8.0.18

import java.sql.Connection;
import java.sql.DriverManager;

class Demo {
    // MySQL < 8.0
    // static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    // static final String DB_URL = "jdbc:mysql://localhost:3306/data";

    // MySQL >= 8.0
    private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    private static final String DB_URL = "jdbc:mysql://localhost:3306/data?useSSL=false&serverTimezone=UTC";
    private static final String USER = "root";
    private static final String PASSWORD = "123456";


    public static void main(String[] args) throws Exception {
        // 注册 JDBC 驱动
        Class.forName(JDBC_DRIVER);

        // 打开链接
        Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);

        // 关闭链接
        conn.close();

    }

}

参考: https://www.runoob.com/java/java-mysql-connect.html

第37 章 : Statement数据库操作接口 158 Statement接口简介

Statement 数据操作

门面设计模式

Connection - 创建 -> Statement - 操作 -> SQl数据库

常用操作

// 数据更新 insert update delete 返回影响行数
int executeUpdate(String sql)

// 数据查询 select 返回查询结果
ResultSet executeQuery(String sql)
159 Statement实现数据更新

新建学生表

create table student(
    id int not null PRIMARY key auto_increment,
    name varchar(20),
    age int
)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

class Demo {

    // MySQL >= 8.0
    private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    private static final String DB_URL = "jdbc:mysql://localhost:3306/data?useSSL=false&serverTimezone=UTC";
    private static final String USER = "root";
    private static final String PASSWORD = "123456";


    public static void main(String[] args) throws Exception {
        // 注册 JDBC 驱动
        Class.forName(JDBC_DRIVER);

        // 打开链接
        Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);

        // 执行SQL语句
        Statement statement = conn.createStatement();
        String sql = "insert into student(name, age) values('Tom', 23)";
        int count = statement.executeUpdate(sql);
        System.out.println("insert count: " + count);
        // insert count: 1
        
        // 关闭链接
        conn.close();

    }

}
160 Statement实现数据查询

避免SELECT *查询,跟上具体要返回的字段名称 select查询结果过大也会对程序造成影响,注意加limit限制

// 查询数据
String sql = "select name, age from student";
ResultSet result = statement.executeQuery(sql);

while (result.next()){
    String name = result.getString("name");
    int age  = result.getInt("age");
    System.out.println(String.format("%s %s", name, age));
    // Tom 23
}
第38 章 : PreparedStatement数据库操作 161 Statement问题分析

Statement问题: 1、不能很好描述日期形式 2、SQL拼凑,造成编写与维护困难 3、对敏感字符数据不能合理拼凑

162 PreparedStatement接口简介

数据和SQL语句分离, 问号? 作为占位符 常用操作

// 数据更新
int executeUpdate()

// 数据查询
ResultSet executeQuery()

更新数据

String sql = "update student set age = ? where id = ? ";
PreparedStatement statement = conn.prepareStatement(sql);
statement.setInt(1, 16);
statement.setInt(2, 1);

int count = statement.executeUpdate();
System.out.println("update count: " + count);
// 1
163 使用PreparedStatement实现数据查询操作
-- 查询全部数据
select name, age from student

-- 根据id查询数据
select name, age from student where id = ?

-- 分页查询
select name, age from student limit ?

-- 统计查询
select count(*) from student
关注
打赏
1665367115
查看更多评论
立即登录/注册

微信扫码登录

0.1587s