JDBC访问数据库

本文详细介绍了JDBC在Java中的应用,包括连接数据库的步骤、状态通道(Statement)与PreparedStatement的区别,以及预编译查询的优势。重点讲解了JDBC的核心组件和PreparedStatement的高效使用。
摘要由CSDN通过智能技术生成

JDBC

JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

JDBC库包括通常与数据库使用相关的下面提到的每个任务的API。

	连接数据库

	创建SQL或MySQL语句

	在数据库中执行SQL或MySQL查询

	查看和修改生成的记录

JDBC体系结构

JDBC API支持用于数据库访问的两层和三层处理模型,通常JDBC体系结构由两层组成:

**JDBC API:**提供了应用程序到JDBC管理器连接

**JDBC驱动程序API:**支持JDBC管理器到驱动程序连接

JDBC API使用驱动程序管理器和特定于数据库的驱动程序来提供与异构数据库的透明连接。

JDBC核心组件

**DriverManager:**此类管理数据库驱动程序列表,使用通信子协议将来自java应用程序的连接请求与适当的数据库驱动程序匹配

**Driver:**此接口处理与数据库服务器的通信,很少会直接与Driver对象进行交互 。而是使用DriverManager对象来管理这种类型的对象

**Connection:**该界面具有用于联系数据库的所有方法。连结对象表示通信上下文,即与数据库的所有通信仅通过连接对象

**Statement:**使用此接口创建的对象将SQL语句提交到数据库,除了执行存储过程之外 ,一些派生接口还接受参数。

**ResultSet:**此类处理数据库应用程序中发生的任何错误。

JDBC连接步骤

package com.kkb;

import java.sql.*;

public class Demo1 {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            //1.加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2.获取连接
            String username = "root";
            String password = "123456";//写自己设置的密码
            String url = "jdbc:mysql://localhost:3306/数据库名?serverTimezone=UTC";
            connection = DriverManager.getConnection(url,username,password);
            //3.定义sql,创建状态通道(进行sql语句的发送)
            statement = connection.createStatement();
            resultSet = statement.executeQuery("select * from employee");//executeQuery(sql)执行查询语句
            //4.取出结果集信息
            while (resultSet.next()){  //判断是否有下一条数据
                //取出数据 resultSet.getXXX("列名"); xxx表示数据类型
                System.out.println("姓名"+resultSet.getString("name")+",性别"+resultSet.getString("sex"));
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            try {
                //5.关闭操作
                if (resultSet != null) {
                    resultSet.close();
                }
                if (statement != null) {
                    statement.close();
                }
                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}

状态通道与与状态通道的区别
对比statement和PreparedStatement

​	statement属于状态通道,PreparedStatement属于预状态通道

​	预状态通道会先编译sql语句,再去执行,比statement效率更高

​	预状态通道支持占位符?,给占位符赋值的时候,位置从1开始

​	预状态通道可以防止sql注入,原因是预状态通道在处理值的时候以字符串的方式处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值