JDBC核心技术详解
作者:北街风 发布时间:2023-12-09 12:22:28
一、JDBC概述
1、数据的持久化
持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以"固化”,而持久化的实现过程大多通过各种关系数据库来完成。
持久化的主要应用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。
2、Java 中的数据存储技术 在Java中,数据库存取技术可分为如下几类:
ØJDBC直接访问数据库
ØJDO技术
Ø第三方O/R工具,如Hibernate, mybatis 等JDBC是java访问数据库的基石,JDO, Hibernate等只是更好
的封装了JDBC
3、JDBC基础
连接数据库:
4、JDBC体系结构
JDBC接口(API)包括两个层次:
Ø 面向应用的API:Java API,抽象接口,供应用程序开发人员使用(连接数据库,执行SQL语句,获得结果)。
Ø 面向数据库的API:Java Driver API,供开发商开发数据库驱动程序用。
5、JDBC API
JDBC API 是一系列的接口,它使得应用程序能够进行数据库联接,执行SQL语句,并且得到返回结果。
6、JDBC程序访问数据库步骤
二、获取数据库连接
1、Driver 接口
java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提
供给数据库厂商使用的,不同数据库厂商提供不同的实现
在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理
器类(java.sql.DriverManager)去调用这些Driver实现
ØOracle的驱动:oracle.jdbc.driver.OracleDriver
ØmySql的驱动: com.mysql.jdbc.Driver
2、加载与注册 JDBC 驱动
3、建立连接(Connection)
4、几种常用数据库的JDBC URL
连接mysql代码实例:
import java.io.InputStream;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import org.junit.Test;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Driver;
public class testconnction01 {
/**
* @throws SQLException
*/
@Test
//方式一
public void testConnection011() throws SQLException {
Driver driver = new com.mysql.jdbc.Driver();
String url = "jdbc:mysql://localhost:3306/test";
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "root");
Connection collection = (Connection) driver.connect(url, info);
System.out.println(collection);
}
@Test
//方式二,对方式一的迭代,使得程序具有更好的可移植性
public void testConnection02() throws Exception {
//获取Driver实现类对象;使用反射
Class clazz= Class.forName("com.mysql.jdbc.Driver");
Driver driver=(Driver) clazz.newInstance();
//提供要连接的数据库
String url = "jdbc:mysql://localhost:3306/test";
//提供连接需要的用户名和密码
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "root");
//获取连接
Connection collection = (Connection) driver.connect(url, info);
System.out.println(collection);
}
@Test
//方式三,使用DriverManager替换Driver
public void testConnection03() throws Exception {
Class clazz= Class.forName("com.mysql.jdbc.Driver");
Driver driver=(Driver) clazz.newInstance();
//提供另外三个连接的基本信息;
String url ="jdbc:mysql://localhost:3306/test";
String user ="root";
String password ="root";
//注册驱动
DriverManager.registerDriver(driver);
//获取连接
Connection connection= (Connection) DriverManager.getConnection(url,user,password);
System.out.println(connection);
}
@Test
//方式四,可以只是加载驱动,不用是示的注册驱动过了。
public void testConnection04() throws Exception {
//提供另外三个连接的基本信息;
String url ="jdbc:mysql://localhost:3306/test";
String user ="root";
String password ="root";
Class.forName("com.mysql.jdbc.Driver");
// Class clazz= Class.forName("com.mysql.jdbc.Driver");
// Driver driver=(Driver) clazz.newInstance();
//
// //注册驱动
// DriverManager.registerDriver(driver);
//
//获取连接
Connection connection= (Connection) DriverManager.getConnection(url,user,password);
System.out.println(connection);
}
@Test
//方式五,(final版):将数据库连接需要的4个基本信息声明在配置文件中,通过读取配置文件的方式,获取连接
//实现了数据和代码的分离(解耦)
public void testConnection05() throws Exception {
//读取配置文件的4个基本信息
InputStream is = testconnction01.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties p =new Properties();
p.load(is);
String user = p.getProperty("user");
String password = p.getProperty("password");
String url = p.getProperty("url");
String driverClass =p.getProperty("driverClass");
Class.forName(driverClass);
//获取连接
Connection connection= (Connection) DriverManager.getConnection(url,user,password);
System.out.println(connection);
}
}
5、使用Statement操作数据表的弊端 a、需要拼写SQL语句
6、Statement操作会导致SQL注入攻击
数据库连接被用于向数据库服务器发送命令和SQL语句,并接受数据库服务器返回的结果。其实一个数据库连接就是一个Socket连接。
在java.sql包中有3个接口分别定义了对数据库的调用的不同方式:
Statement :用于执行静态SQL语句并返回它所生成结果的对象。PrepatedIatement : SQL语句被预编译并存储在此对象中,可以使用此对象多次高效地执行该语句。CallableStatement :用于执行SQL存储过程
-
来源:https://blog.csdn.net/qq_45047809/article/details/114881638


猜你喜欢
- xml中: <ImageView &nb
- JAVA调用webservice,当你刚开始接触的时候你会觉得它是一个恶梦,特别是没有一个统一的标准实现,比起.net的那些几步
- 在 C# 以二进制形式读取数据时使用的是 BinaryReader 类。BinaryReader 类中提供的构造方法有 3 种,具体的语法形
- C#中Description特性主要用于枚举和属性,方法比较简单,记录一下以便后期使用。扩展类DescriptionExtension代码如
- IFormattable接口提供了ToString()方法的定义,使用该方法可以将对象的值按照指定的格式转化成字符串的功能。下面是ToStr
- 最近的项目中,想做到一种能够吸引眼球的一种角色选择浏览效果Demo源码:点击打开链接最终实现了下按如下图这么一种浏览效果:效果图一效果图二可
- 设计算法,计算两给定基因序列的相似程度。人类基因由4种核苷酸,分别用字母ACTG表示。要求编写一个程序,按以下规则比较两个基因序列并确定它们
- 题意Description相信大家都做过"A+B Problem"了吧,这道题是它的加强版。输入两个整数 A , B ,
- Java多线程综合案例数字加减设计4个线程对象,两个线程执行减操作,两个线程执行加操作public class ThreadDemo{ &n
- 本文实例讲述了Android编程之交互对话框。分享给大家供大家参考,具体如下:1. 在Android SDK中,虽然有许多的窗口,有些类似M
- 本文实例为大家分享了SpringMVC按Ctrl上传多个文件的具体实现代码,供大家参考,具体内容如下JSP页面注意:必须加入multiple
- 第一次接触到随机数还是在c语言里面 使用的是 rand(); 但是重新执行一次的时候会发现,诶,居然和上一次执行的结果是一样的,因为没有初始
- 效果图:A.绘制圆环,圆弧,文本//1.画圆环//原点坐标float circleX = width / 2;float circleY =
- Java从json串中获取某个值java对象是不能直接传输,只有json对象 转成字符串 可以进行传输 故 传输中都是json进行的 接收到
- 使用Eureka实现服务治理作用:实现服务治理(服务注册与发现)简介:Spring Cloud Eureka是Spring Cloud Ne
- 本文介绍为了实现高效并发,虚拟机对 synchronized 做的一系列的锁优化措施高效并发是从 JDK5 升级到 JDK6 后一项重要的改
- linux下的shell命令:ps -ef |grep java|grep “ ”&quo
- 日志输出是所有系统必备的,很多开发人员可能因为常常使用log4j而忽视了JDK logging模块,两者之间是否有联系?是怎样的联系?JDK
- 众所周知Java中的数据类型是强数据类型,基本数据类型之间的转换尤其固定的规则,当数据宽度比较窄的数据类型(如int)转换成数据类型比较宽的
- Gstreamer到底是个啥?GStreamer 是一个 基于pipeline的多媒体框架,基于GObject,以C语言写成。应用GStre