Java-加载数据库驱动,取得数据库连接
在Java中想要进行数据库操作,最重要的两个步骤就是加载数据驱动,然后取得数据库连接。
1.加载 数据库驱动( Class.forName(String className) ):
因为Java是一种纯面向对象的编程语言,所以一切事物都可以看作是类或者类对象,数据库也是,Java正是通过JDBC将数据库抽象成为对象,然后对该对象进行操作。不同的是,数据库是本身存在的,不需要Java进行创建,我们要做的只是将一个正常运行的数据库实例在我们的Java程序中进行访问。
然而任何类在Java中正常运行都需要一个驱动器,一般的类的驱动器就是JVM本身,数据库程序是不依赖虚拟机驱动的程序,所以必须自己实现驱动器,这时候就用到了Class.forName(String className),这个方法就是用来手写驱动器的。这时又会有一个问题,类名是什么?
外部程序要被Java访问首先一点,该外部程序要有被Java调用的接口,并且有符合Java命名规则的类名。Java接口就是被JVM控制程序行为的Java驱动器,也就是JDBC。该接口是由数据库厂商提供的,所以类名也是由数据库厂商提供,像MySQL的命名为:com.sql.jdbc.Driver。
forName的加载原理:
a.当程序运行之后,该接口的类名以及以及句柄会记录到该程序的进程信息中;
b.forName传入该类名之后会到操作系统中找到具有该类名的线程,找到对应的线程就会找到该线程对应的驱动器,然后就将该驱动器加载到JVM中;
c.之后就可以在Java程序中通过类名调用该进程的功能。
当然,如果是用Eclipse的话,要先把JDBC驱动加载到运行环境中。
2.取得数据库连接( DriverManager.getConnection(URL, USERNAME, PASSWORD) ):
forName加载完成后会发现这是个数据库类的驱动,之后会进行一些特殊操作。JDBC是用DriverManager类管理数据库驱动,而且DriverManager只用来管理JDBC驱动。加载完成的数据驱动会抽象成Java类型保存在DriverManager的静态变量driver中。JDBC规定,一个Java进程只能有一个JDBC驱动,而且数据库访问与HTTP协议的原理一样,也是要先建立连接。
之后DriverManager的静态同步方法getConnection方法利用driver建立与数据库的连接,该方法的第一个参数URL也必须参照数据库厂商的规定,MySQL的写法为:jdbc:mysql://hostname:port/具体数据库名,第二个和第三个参数是数据库用户名密码。该方法的返回值是一个Connection对象,Java程序通过该对象对数据库进行操作。
Java-加载数据库驱动,取得数据库连接的更多相关文章
- java 加载数据库驱动
JDBC编程步骤见 JDBC编程步骤 JDBC编程的第一步是加载数据库驱动,使用Class类的forName()方法,Class.forName("com.mysql.jdbc.Driver ...
- JDBC 学习笔记(四)—— JDBC 加载数据库驱动,获取数据库连接
1. 加载数据库驱动 通常来说,JDBC 使用 Class 类的 forName() 静态方法来加载驱动,需要输入数据库驱动代表的字符串. 例如: 加载 MySQL 驱动: Class.forName ...
- java加载jdbc驱动三种方式的比较
一.引言 平时连接数据库的时候首先要加载jdbc驱动,这一步骤其实有三种方式,他们的区别?优劣? 二.快速了解三种加载方式 Class.forName(“com.mysql.jdbc.Driver”) ...
- jdbc 加载数据库驱动如何破坏双亲委托模式
导读 通过jdbc链接数据库,是每个学习Java web 方向的人必然一开始会写的代码,虽然现在各路框架都帮大家封装好了jdbc,但是研究一下jdbc链接的套路还是很意义 术语以及相 ...
- JDBC:加载数据库驱动、连接数据库(详细讲解)
加载数据库驱动: 1)由于Java是一个纯面向对象语言,任何事物在其中都必须抽象成类或者类对象,数据库也不例外,JDBC同样也把数据库抽象成面向对象的结构: 2)JDBC将整个数据库驱动器在底层抽象成 ...
- ThinkCMF项目部署出现无法加载数据库驱动解决方案
最近有个TP项目刚从从本地部署到阿里云服务器上,出现了无法加载数据库驱动的错误,提示 :( 无法加载数据库驱动: Think\Db\Driver 这里分享一下出现该错误的解决步骤: 首先记得项目部署到 ...
- JDBC加载数据库驱动的方式
JDBC作为数据库访问的规范接口,其中只是定义一些接口.具体的实现是由各个数据库厂商来完成. 一.重要的接口: 1.public interface Driver 每个驱动程序类必须实现的接口.Jav ...
- springboot启动不能加载数据库驱动Failed to determine a suitable driver class
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/G:/sharp/repo ...
- java加载机制整理
本文是根据李刚的<疯狂讲义>作的笔记,程序有的地方做了修改,特别是路径,一直在混淆,浪费了好多时间!!希望懂的同学能够指导本人,感激尽............ 1.jvm 和 类的关系 当 ...
随机推荐
- web 前端(轮番插件)
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...
- 打破陈规抓痛点,H3 BPM10.0挑战不可能
高效益意味着相似的运营活动比竞争对手做得更好,而战略定位则意味着企业在运营活动中有区别于竞争对手的实施方式,即差异化竞争.在新经济体下,面对社会的变革.市场的竞争环境.不断攀升的成本压力,几乎没有企业 ...
- Android 算法 关于递归和二分法的小算法
// 1. 实现一个函数,在一个有序整型数组中二分查找出指定的值,找到则返回该值的位置,找不到返回 -1. package demo; public class Mytest { public st ...
- 在centos7(EL7.3 即 kernel-3.10.0-514.X )上安装BCM4312无线网卡驱动要注意的问题
我新装的centos7主机无法使用里面自带的网卡,查询后发现网卡型号为BCM4312.我在看资料安装的过程中遇到了些问题,纠结了好久,现在分享下要注意的点,为后来的遇到同样问题的人提供点帮助.现在开始 ...
- 我的MYSQL学习心得(四) 数据类型
我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...
- 一步步学习javascript基础篇(7):BOM和DOM
一.什么是BOM.什么是DOM BOM即浏览器对象模型,主要用了访问一些和网页无关的浏览器功能.如:window.location.navigator.screen.history等对象. DOM即文 ...
- 使用CSS3的box-shadow实现双透明遮罩层对话框
box-shadow介绍 在我之前的一篇文章<从天猫和支付宝身上学习opcity与rgba>中,介绍了实现双透明遮罩层效果的两种方法,分别是opacity和rgba.他们需要分别依赖于不同 ...
- API Monitor简介(API监控工具)
API Monitor是一个免费软件,可以让你监视和控制应用程序和服务,取得了API调用. 它是一个强大的工具,看到的应用程序和服务是如何工作的,或跟踪,你在自己的应用程序的问题. 64位支持 API ...
- ValueInjecter----最好用的OOM(以微信消息转对象举例)
使用数据实体的好处我这里就不多说了,但大家享受这些好处的时候,难免也对那些琐碎的赋值代码感到厌烦,基于此,我认为掌握一个oom的使用,还是很有必要的. 这种类型的工具有很多,比如automapper, ...
- 命令行查看Windows激活信息(win7、win8、win10...)
使用:Win+ R 组合键,打开运行命令框,复制命令,粘贴后回车. slmgr.vbs -xpr 查询Windows是否永久激活slmgr.vbs -dlv 查询到Windows的激活信息,包括:激活 ...