JDBC核心技术详解

作者:北街风 时间:2023-12-09 12:22:28 

一、JDBC概述

1、数据的持久化

持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以"固化”,而持久化的实现过程大多通过各种关系数据库来完成。

持久化的主要应用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。

JDBC核心技术详解

2、Java 中的数据存储技术 在Java中,数据库存取技术可分为如下几类:

ØJDBC直接访问数据库
ØJDO技术
Ø第三方O/R工具,如Hibernate, mybatis 等JDBC是java访问数据库的基石,JDO, Hibernate等只是更好
的封装了JDBC

3、JDBC基础

JDBC核心技术详解

连接数据库:

JDBC核心技术详解
JDBC核心技术详解

4、JDBC体系结构

JDBC接口(API)包括两个层次:

Ø 面向应用的API:Java API,抽象接口,供应用程序开发人员使用(连接数据库,执行SQL语句,获得结果)。

Ø 面向数据库的API:Java Driver API,供开发商开发数据库驱动程序用。

JDBC核心技术详解

5、JDBC API

JDBC API 是一系列的接口,它使得应用程序能够进行数据库联接,执行SQL语句,并且得到返回结果。

JDBC核心技术详解

6、JDBC程序访问数据库步骤

JDBC核心技术详解
JDBC核心技术详解

二、获取数据库连接

1、Driver 接口

java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提
供给数据库厂商使用的,不同数据库厂商提供不同的实现

在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理
器类(java.sql.DriverManager)去调用这些Driver实现
ØOracle的驱动:oracle.jdbc.driver.OracleDriver
ØmySql的驱动: com.mysql.jdbc.Driver

2、加载与注册 JDBC 驱动

JDBC核心技术详解

3、建立连接(Connection)

JDBC核心技术详解

4、几种常用数据库的JDBC URL

JDBC核心技术详解

连接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语句

JDBC核心技术详解

6、Statement操作会导致SQL注入攻击

JDBC核心技术详解

数据库连接被用于向数据库服务器发送命令和SQL语句,并接受数据库服务器返回的结果。其实一个数据库连接就是一个Socket连接。

在java.sql包中有3个接口分别定义了对数据库的调用的不同方式:

Statement :用于执行静态SQL语句并返回它所生成结果的对象。PrepatedIatement : SQL语句被预编译并存储在此对象中,可以使用此对象多次高效地执行该语句。CallableStatement :用于执行SQL存储过程

-JDBC核心技术详解

JDBC核心技术详解
JDBC核心技术详解

来源:https://blog.csdn.net/qq_45047809/article/details/114881638

标签:Java,JDBC,核心技术
0
投稿

猜你喜欢

  • 如何使用C#修改本地Windows系统时间

    2022-05-06 08:23:00
  • Java给JFrame窗口设置热键的方法实现

    2022-01-24 13:32:20
  • Spring学习笔记1之IOC详解尽量使用注解以及java代码

    2021-10-07 16:17:02
  • Java查看线程运行状态的方法详解

    2023-05-23 12:21:10
  • SpringBoot如何实现分离资源文件并打包

    2023-02-18 12:01:49
  • SpringMVC文件上传原理及实现过程解析

    2021-09-03 00:24:25
  • C#实现装箱与拆箱操作简单实例

    2023-09-10 15:37:28
  • C语言线索二叉树基础解读

    2023-03-31 12:04:55
  • Android仿最新微信相机功能

    2022-06-08 00:35:08
  • Android TextView控件文字添加下划线的实现方法

    2022-03-11 06:01:43
  • Android 将本地资源图片转换成Drawable,进行设置大小操作

    2023-06-19 17:38:55
  • Android实现界面跳转功能

    2022-05-07 21:51:32
  • C#锁住文件的操作步骤

    2022-07-18 13:41:20
  • BeanUtils.copyProperties在拷贝属性时忽略空值的操作

    2022-07-11 05:22:04
  • Android PopupWindow被输入法弹上去之后无法恢复原位的解决办法

    2023-07-24 12:23:31
  • Java编程Socket实现多个客户端连接同一个服务端代码

    2023-12-27 05:32:11
  • C#中Request.Cookies 和 Response.Cookies 的区别分析

    2023-07-10 07:24:59
  • android跑马灯出现重复跳动以及不滚动问题的解决方法

    2023-07-24 00:33:48
  • C# wpf使用ListBox实现尺子控件的示例代码

    2023-02-23 04:43:30
  • 浅谈C#网络编程详解篇

    2022-10-23 04:30:28
  • asp之家 软件编程 m.aspxhome.com