当前位置: 首页 > news >正文

JDBC 结构

JDBC

Java 应用通过 JDBC 连接到数据库执行有五步

  1. Register the driver class
  2. Creating connection
  3. Creating statement
  4. Executing queries
  5. Closing connection

DriverManager class

DriverManager 类顾名思义,用来管理 driver。主要有注册接口。getConnection 的时候用 DriverManager 当前的 classloader 尝试顺序加载注册的 driver,加载到哪个用那个。

Connection Interface

一个 connection 是一次应用和数据库的 session。也是 Statement, PreparedStatement, and DatabaseMetaData 的 factory。

管理这这次回话的提交,回滚,关闭连接。

PreparedStatement interface

provides methods to execute queries with the database. The statement interface is a factory of ResultSet

PreparedStatement 比 Statement 好的原因在于

  1. 提升性能
    执行 sql 分四步

    1. Parsing of sql query
    2. Compile this Query
    3. optimization of data acquisition path
    4. execute the query
      PreparedStatement 只需要做一次前三步,而 Statement 每次都要做前三步。
  2. 通过类型校验,escapse 特殊字符防止 sql 注入
public class JdbcTest {
    public static void main(String args[]) {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager
                .getConnection("jdbc:oracle:thin:@localhost:1521:xe", "system", "oracle");
            PreparedStatement stmt = con.prepareStatement("insert into Emp values(?,?)");
            stmt.setInt(1, 101);
            stmt.setString(2, "Ratan");
            int i = stmt.executeUpdate();
            System.out.println(i + " records inserted");
            con.close();
        } catch (Exception e) {}
    }
}

参考资料
Java JDBC Tutorial - javatpoint

相关文章:

  • 【以太坊】雷电网络的101网络原理概述
  • @property @synthesize @dynamic 及相关属性作用探究
  • 获取网贷之家数据
  • ES6 新特性之 let, const : JavaScript在变量方面的改进。
  • sqlmap tamter
  • ubuntu apache 配置虚拟主机 与 二级域名
  • ASP.NET Core真实管道详解[2]:Server是如何完成针对请求的监听、接收与响应的【上】...
  • java项目学习
  • 方向导数的计算与梯度
  • 大数据框架hadoop服务角色介绍
  • 谈谈Java程序员未来的出路
  • spring boot框架学习1-认识spring boot和快速入门
  • DbForge Data Compare for SQL Server入门教程:连接、同步数据库
  • mysql修改表的存储引擎(myisam=innodb)【转】
  • spring boot系列(七)spring boot 使用mongodb
  • Akka系列(七):Actor持久化之Akka persistence
  • docker容器内的网络抓包
  • Hexo+码云+git快速搭建免费的静态Blog
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Java IO学习笔记一
  • Java 最常见的 200+ 面试题:面试必备
  • Java小白进阶笔记(3)-初级面向对象
  • spring boot下thymeleaf全局静态变量配置
  • 分类模型——Logistics Regression
  • 我的zsh配置, 2019最新方案
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 7行Python代码的人脸识别
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #LLM入门|Prompt#3.3_存储_Memory
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (27)4.8 习题课
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (八)Spring源码解析:Spring MVC
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)memcache、redis缓存
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET 反射的使用
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET 中的轻量级线程安全
  • .net对接阿里云CSB服务
  • /usr/bin/env: node: No such file or directory
  • [2010-8-30]
  • [CLR via C#]11. 事件
  • [Design Pattern] 工厂方法模式
  • [Dxperience.8.*]报表预览控件PrintControl设置