JDBC简单示例

本文详细讲解了JDBC在Java中的应用,包括连接数据库、执行SQL、事务处理和元数据获取,附带一个JDBC操作用户表的示例。

引言

JDBC(Java Database Connectivity)是一种用于在 Java 程序中与数据库进行交互的标准API。它提供了一组接口和类,使开发人员能够连接到数据库、执行 SQL 查询和更新等操作。本文将介绍 JDBC 的基本原理和一个数据库操作示例。

基本原理

JDBC 的核心思想是通过不同数据库供应商提供的驱动程序(JDBC Driver)来实现与数据库的通信。开发人员只需要使用标准的 JDBC API,而无需关注具体的数据库实现。JDBC 定义了一组接口和类,开发人员可以使用这些接口和类来连接数据库、执行 SQL 语句以及处理结果集。

JDBC 在数据库操作中的应用

JDBC 在开发中起着至关重要的作用,它使我们能够轻松地与各种类型的数据库进行交互。以下是一些常见的应用场景:

  1. 数据库连接和管理:JDBC 提供了连接数据库的能力,并支持连接池管理,以提高性能和资源利用率。

  2. 执行 SQL 查询和更新:通过 JDBC,我们可以执行各种类型的 SQL 查询和更新操作,如 SELECT、INSERT、UPDATE 和 DELETE 等。

  3. 执行事务处理:JDBC 支持事务处理,可以确保一组相关的数据库操作要么全部成功执行,要么全部回滚。

  4. 获取元数据信息:通过 JDBC 的元数据 API,我们可以获取数据库的结构信息,如表、列、索引等,以便进行数据模型分析和查询优化。

加载与注册JDBC驱动步骤

1.注册驱动

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

2.获取连接

Connection connection = DriverManager.getConnection(url,username,password);

3.定义SQL语句

String sql = "select ..."

4.获取执行SQL对象

Statement stmt = conn.createStatement();

5.执行SQL

stmt.executeUpdate/executeQuery(sql);

6.处理返回结果

7.释放资源

示例

创建一个user表,在java中建立4个Test,分别测试增删改查操作。

表已建好:

jdbc代码如下:

package com.wedu;

import org.junit.Test;

import java.sql.*;

public class problem {

    public Connection cs() throws ClassNotFoundException, SQLException {
        //注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //获取连接
        String url = "jdbc:mysql://localhost:3306/my_db";
        String username = "root";
        String password = "root";
        Connection connection = DriverManager.getConnection(url,username,password);
        return connection;

    }
    //增加
    @Test
    public void add() throws SQLException, ClassNotFoundException {
        //定义SQL语句
        String sql1 = "INSERT INTO user VALUES(1,\"李四\",21)";
        //获取执行SQL对象
        PreparedStatement st = cs().prepareStatement(sql1);
        //执行SQL
        int i = st.executeUpdate();//结果为影响的行数
        System.out.println(i);

    }
    //删除
    @Test
    public void delete() throws SQLException, ClassNotFoundException {
        String sql2 = "DELETE FROM user WHERE id = 1 ";
        PreparedStatement st = cs().prepareStatement(sql2);
        int i = st.executeUpdate();
        System.out.println(i);
    }
    //修改
    @Test
    public void update() throws SQLException, ClassNotFoundException {
        String sql3 = "UPDATE USER SET age = 30 WHERE id = 1";//将id为1的用户年龄改成30
        PreparedStatement st = cs().prepareStatement(sql3);
        int i = st.executeUpdate();
        System.out.println(i);
    }
    //查询

    @Test
    public void select() throws SQLException, ClassNotFoundException {
        User user1 = new User();
        String sql4 = "SELECT * FROM user where id = ?";//占位符?替代参数
        PreparedStatement st = cs().prepareStatement(sql4);//使用PreparedStatement预防SQL注入问题
        st.setInt(1,1);//给?赋值
        ResultSet i = st.executeQuery();

        while (i.next()){

            System.out.println(i.getInt(1));//输出每一列的值
            System.out.println(i.getString(2));
            System.out.println(i.getInt(3));
            user1.setId(i.getInt(1));//封装到user类中
            user1.setName(i.getString(2));
            user1.setAge(i.getInt(3));
        }
        System.out.println(user1.toString());
    }

}
class User{//新建User类来封装查询到的数据
    int id;
    String name;
    int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "user{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值