JDBC编写流程

什么是jdbc:java连接数据库!

image-20211214162231438

需要jar包的支持:

  • java.sql
  • javax.sql
  • mysql-connection-java...(连接驱动)

数据库依赖创建#

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zhang</groupId>
    <artifactId>javaweb-jdbc</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.27</version>
        </dependency>
    </dependencies>

</project>

jdbc固定步骤:

  1. 加载驱动
  2. 连接数据库
  3. 创建Statement
  4. 编写sql
  5. 执行sql
  6. 关闭连接

不安全的数据库连接#

package com.zhang.until;

import java.sql.*;

public class JDBC {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //获取配置信息
        //解决中文乱码
        String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
        String username="root";
        String password="6113081";
        //1.加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.链接数据库,其对象就代表了数据库(不安全)
        Connection connection = DriverManager.getConnection(url, username, password);
        //向数据库发送sql的对象:用它来做crud操作statement(普通),preparedStatement(安全)但其需要预编译
        Statement statement = connection.createStatement();

        //编写sql
        //String sql="select * from users";
        String sql="delete from users where id=4";
        //预编译开启安全的数据库连接
        //PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //执行查询sql并返回了一个结果集
        ResultSet resultSet = statement.executeQuery(sql);
        while (resultSet.next()){
            System.out.println("id="+resultSet.getObject("id"));
            System.out.println("name="+resultSet.getObject("name"));
            System.out.println("password="+resultSet.getObject("password"));
            System.out.println("email="+resultSet.getObject("email"));
            System.out.println("birthday="+resultSet.getObject("birthday"));
        }


        //关闭连接释放资源(一定要做)先开的后关
        resultSet.close();
        statement.close();
        connection.close();
    }
}

安全的数据库连接(预编译版本)#

package com.zhang.until;

import java.sql.*;

public class JDBCTest02 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //获取配置信息
        //解决中文乱码
        String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
        String username="root";
        String password="6113081";
        //1.加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.链接数据库,其对象就代表了数据库(不安全)
        Connection connection = DriverManager.getConnection(url, username, password);
        //预编译开启安全的数据库连接
        String sql="insert into users(id, name, password, email, birthday) VALUES (?,?,?,?,?)";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setInt(1,6);
        preparedStatement.setString(2,"falltime张三");
        preparedStatement.setString(3,"123456");
        preparedStatement.setString(4,"falltime@qq.com");
        preparedStatement.setDate(5,new Date(new java.util.Date().getTime()));
        //执行查询sql
        int i = preparedStatement.executeUpdate();
        if (i > 0) {
            System.out.println("成功插入数据");
        }
        //关闭连接释放资源(一定要做)先开的后关
        preparedStatement.close();
        connection.close();
    }
}
posted @   Cn_FallTime  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示
主题色彩