JDBC for Mysql

JDBC是Java连接数据库的标准,通过DriverManager注册和获取数据库驱动,建立Connection。Connection接口用于执行SQL,Statement和PreparedStatement接口处理SQL语句,ResultSet处理查询结果。示例代码展示了如何建立连接、数据插入和查询。
摘要由CSDN通过智能技术生成

JDBC概念

什么是JDBC

jdbc(java database connection):java应用程序连接数据库的技术

java提供了jdbc技术的标准,各个数据库供应商遵从标准提供各自的实现,如果想连接数据库就需要引入对应数据库的第三方jar包

JDBC基本的类和接口

一个类:

DriverManager:DriverManager是Java JDBC API中的一个类,用于管理数据库驱动程序。它提供了一组静态方法,用于注册和获取数据库驱动程序,并创建数据库连接。 DriverManager的主要功能如下: ​ 注册数据库驱动程序:在使用特定的数据库之前,需要先注册对应的数据库驱动程序。通过调用registerDriver()方法,可以向DriverManager注册一个特定的数据库驱动程序。例如:

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

获取数据库连接:通过DriverManager可以获取与数据库的连接。使用getConnection()方法,可以根据指定的数据库URL、用户名和密码创建一个Connection对象。例如:

String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "user";
String password = "password";
Connection connection = DriverManager.getConnection(url, username, password);

加载驱动程序:在早期版本的JDBC中,需要显式加载驱动程序。使用Class.forName()方法可以加载并注册驱动程序。例如:

Class.forName("com.mysql.jdbc.Driver");

DriverManager简化了驱动程序的加载和数据库连接的获取过程,为Java应用程序提供了与数据库进行交互的基本功能。

三个接口

Connection:通过使用数据库特定的驱动程序,可以创建一个Connection对象,它代表与数据库的物理连接。使用Connection对象,可以执行SQL语句并处理数据库的事务。

Statement/子接口:JDBC提供了Statement和PreparedStatement两个主要的接口来执行SQL语句。Statement用于执行静态的SQL语句,而PreparedStatement则用于执行带有参数的SQL语句。通过这些接口,可以向数据库发送SQL语句并接收执行结果。

ResultSet:当执行一个查询语句时,可以通过ResultSet对象获取查询结果。ResultSet提供了对查询结果的访问和处理方法,可以遍历结果集中的行,并获取每行中的列数据。

建立连接

示例代码:

public static void main(String[] args) {
     //数据库相关信息
            String url="jdbc:mysql://localhost:3306/spring_db";
            String username="root";
            String password="123456789";
        try {
            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //开启数据库连接
            Connection con = DriverManager.getConnection(url, username, password);
        } catch (ClassNotFoundException | SQLException e) {
            throw new RuntimeException(e);
        }
    }

注意:在MySQL 8.0之前的版本中,需要使用Class.forName("com.mysql.jdbc.Driver")语句来加载MySQL的JDBC驱动程序。在 MySQL 8.0 以及更新的版本中,引入了MySQL原生的JDBC驱动程序(称为MySQL Connector/J),不再需要显式加载驱动程序。

数据更新和查询

示例代码:

public static void main(String[] args) {
        //数据库相关信息
        String url="jdbc:mysql://localhost:3306/spring_db";
        String username="root";
        String password="123456789";
        Connection con=null;
        try {
            //开启数据库连接
            con = DriverManager.getConnection(url, username, password);
            Statement sta = con.createStatement();
            //新增数据
            String name="小明";
            double money=4100;
            String sql = "insert into account(name,money) values('"+name+"','"+money+"')";
            int i = sta.executeUpdate(sql);
            if(i>0){
                System.out.println("添加成功");
            }else {
                System.out.println("添加失败");
            }
            //查询
            ResultSet resultSet = sta.executeQuery("select * from account");
            while (resultSet.next()){
                System.out.println(resultSet.getString("name")+" "+resultSet.getDouble("money"));
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

更新数据(增删改)用的是Statement中的executeUpdate()方法,返回值为受影响的行数

查询数据用的是Statement中的executeQuery()方法,返回值是查询的结果集,查看需要进行遍历

具体代码示例

数据库中Account表:

Java中Account实体类:

package org.example;
​
public class Account {
    int id;
    String name;
    double money;
​
    public Account() {
    }
​
    public Account(String name, double money) {
        setName(name);
        setMoney(money);
    }
​
    public Account(int id, String name, double money) {
        this.id = id;
        this.name = name;
        this.money = money;
    }
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public double getMoney() {
        return money;
    }
​
    public void setMoney(double money) {
        this.money = money;
    }
​
    public int getId() {
        return id;
    }
​
    public void setId(int id) {
        this.id = id;
    }
​
    @Override
    public String toString() {
        return "Account{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", money=" + money +
                '}';
    }
}
 

实现类:

package org.example;
​
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
​
public class AccountManager {
    //连接数据库信息
    public static final String URL = "jdbc:mysql://localhost:3306/spring_db";
    public static final String USERNAME = "root";
    public static final String PASSWORD = "123456";
​
    private Connection conn = null;
    private Statement stmt = null;
    private ResultSet rs = null;
    //关闭连接
    private void myClose(){
        try {
            if(rs != null)
                rs.close();
            if(stmt != null)
                stmt.close();
            if(conn != null)
                conn.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
​
    //新增数据
    public int add(Account account){
        int count = 0;
        String sql = "insert into account(name,money) values('" + account.getName() + "'," + account.getMoney() + ")";
        try {
            //获取连接
            conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
            //得到statement对象
            stmt = conn.createStatement();
            //得到返回结果
            count=stmt.executeUpdate(sql);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            myClose();
        }
        return count;
    }
​
    //查询数据
    public List<Account> findAll(){
        String sql = "select * from account";
        List<Account> list = new ArrayList<>();
        try {
            conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
            stmt = conn.createStatement();
            //获取查询结果集
            rs = stmt.executeQuery(sql);
            while (rs.next()){
                //加到集合中
                Account account = new Account();
                account.setId(rs.getInt("id"));
                account.setName(rs.getString("name"));
                account.setMoney(rs.getDouble("money"));
                list.add(account);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            myClose();
        }
        //返回集合
        return list;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值