JDBC的学习总结

今天学习了一下JDBC,作为一个初学者,只是初步的了解了一下JDBC。
JDBC API提供了以下接口和类:

DriverManager: 这个类管理数据库驱动程序的列表。内容是否符合从Java应用程序使用的通信子协议正确的数据库驱动程序的连接请求。识别JDBC在一定子协议的第一个驱动器将被用来建立数据库连接。

Driver: 此接口处理与数据库服务器通信。很少直接与驱动程序对象。相反,使用DriverManager中的对象,它管理此类型的对象。它也抽象与驱动程序对象工作相关的详细信息

Connection : 此接口与接触数据库的所有方法。连接对象表示通信上下文,即,与数据库中的所有的通信是通过唯一的连接对象。

Statement : 可以使用这个接口创建的对象的SQL语句提交到数据库。一些派生的接口接受除执行存储过程的参数。

ResultSet: 这些对象保存从数据库后,执行使用Statement对象的SQL查询中检索数据。它作为一个迭代器,让您可以通过移动它的数据。

SQLException: 这个类处理发生在一个数据库应用程序的任何错误。

JDBC的一般执行步骤:
导入数据包: 要求包括含有需要进行数据库编程的JDBC类的包。大多数情况下,使用
importjava.sql.* 就可以了。

注册JDBC驱动程序:要求初始化驱动程序,使它可以与数据库打开一个通信通道。
Class.forName(“com.mysql.jdbc.Driver”);

打开一个连接:要求中使用DriverManager.getConnection()方法创建一个Connection对象,它代表与数据库服务器的物理连接。
Connection conn = DriverManager.getConnection(String url);

创建Statement对象: 通过Statement对象将SQL语句提交到数据库。
stmt = conn.createStatement();

执行操作: INSERT,DELETE,UPDATE,SELECT等
String sql = “INSERT INTO USERINFO VALUES()”;
stmt.executeUpdate(sql);

清理环境:需要明确地关闭所有的数据库资源相对依靠JVM的垃圾收集。
stmt.close();
conn.close();

  1. 关于executeQuery()和executeUpdate()方法的区别
    a. executeQuery()主要用来执行 SELECT语句, 产生单个结果集:ResultSet rs;
    b.executeUpdate()主要用来执行INSERT,DELETE,UPDATE和SQL DLL(数据定义语言)语句.
    执行insert,delete,update时返回受影响的行数
    执行CREATE TABLE,DROP TABLE等不操作行的语句时,返回0;
  2. 占位符的使用
package com.study.dao;

//导入数据包
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCTest
{
    public static void main(String[] args) throws SQLException
    {
        Statement stmt = null;
        Connection conn = null;

        try
        {
            //注册jdbc驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/test2?"
                    + "user=root&password=root&useUnicode=true&characterEncoding=UTF8";
            conn = DriverManager.getConnection(url);//打开一个链接
            stmt = conn.createStatement();
            //String sql = "DROP TABLE REGISTRATION ";//因为之前表存在所以先删除这张表
            //stmt.executeUpdate(sql);

            String sql = "CREATE TABLE REGISTRATION " + "(id INTEGER not NULL, " + " first VARCHAR(255), "
                    + " last VARCHAR(255), " + " age INTEGER, " + " PRIMARY KEY ( id ))";

            stmt.executeUpdate(sql);//创建一张Registration表
            sql = "INSERT INTO REGISTRATION VALUES(?, ?, ?, ?)";//? 占位
            PreparedStatement pstm=conn.prepareStatement(sql);
            for ( int i = 0; i < 10; i++ )
            {
                pstm.setInt(1, i + 1);
                pstm.setString(2, "wang"+i);
                pstm.setString(3, "xiaoming"+i);
                pstm.setInt(4, 12+i);
                pstm.executeUpdate();
            }
            pstm.close();
            stmt.close();
            conn.close();
        }
        catch (SQLException se)
        {
            // Handle errors for JDBC
            se.printStackTrace();
        }
        catch (Exception e)
        {
            // Handle errors for Class.forName
            e.printStackTrace();
        }
        finally
        {
            // finally block used to close resources
            try
            {
                if (stmt != null)
                    stmt.close();
            }
            catch (SQLException se)
            {
            } // do nothing
            try
            {
                if (conn != null)
                    conn.close();
            }
            catch (SQLException se)
            {
                se.printStackTrace();
            } // end finally try
        } // end try
    }
}
  1. 异常处理
    驱动加载错误
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    在WebConnect->WEB-INF->lib路径下加入mysql-connector-java-5.1.7-bin.jar包

未完待续。。。
(若有什么不对的地方欢迎批评教育,谢。)
参考文章:https://www.douban.com/note/247653686/
推荐学习:http://www.yiibai.com/jdbc/jdbc-insert-records.html

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值