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 和 类的关系 当 ...
随机推荐
- 热修复-Tinker
微信开源,真是喜出望外,必须要去看看啊,比起nuwa来微信好很多,而且github上也有专门的官方文档说明,还有很多资料查询 参考地址:https://github.com/Tencent/tinke ...
- 记录在Windows上安装和使用Oracle数据库过程中的坑
1.安装Oracle Oracle软件是免费的,可以去官网下载相应的安装包.但是如果用于商业用途需要购买License.官网上针对各种平台,32位和64位都有,如果在Windows一般会下载到两个文件 ...
- CentOS 6.5安装Node.js, npm
CentOS上可以通过下载*.tar.gz安装包的方式自己解压缩.编译的方式安装,同时还可以采用EPEL的方式安装: Node.js and npm are available from the Fe ...
- CentOS7 + mono +Jexus 环境的搭建
CentOS7的安装和配置 1,从http://www.centos.org/下载CentOS7的镜像,并在VMWare中创建该镜像的虚拟机,为方便操作,把虚拟机的网络连接设置为桥接模式:在安装过程中 ...
- Linux 中的数值计算和符号计算
不知道经常需要做科学计算的朋友们有没有这样的好奇:在 Linux 系统下使用什么工具呢?说到科学计算,首先想到的肯定是 Matlab,如果再说到符号计算,那就非 Mathematica 不可了.可惜, ...
- ASP.NET MVC 系列随笔汇总[未完待续……]
ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...
- ASP.NET Web API 控制器执行过程(一)
ASP.NET Web API 控制器执行过程(一) 前言 前面两篇讲解了控制器的创建过程,只是从框架源码的角度去简单的了解,在控制器创建过后所执行的过程也是尤为重要的,本篇就来简单的说明一下控制器在 ...
- 敏捷团队中的QA由来
QA,全称为Quality Analyst,即质量分析师(有些称为Quality Assurance,即质量保证师).为什么它总跟质量扯在一块?感觉这个角色明明做的都是测试的事情,为什么不直接叫做te ...
- Javascript 相关文章 —— 性能
在 IBM Bluemix 云平台上开发并部署您的下一个应用. 开始您的试用 概览 无论当前 JavaScript 代码是内嵌还是在外链文件中,页面的下载和渲染都必须停下来等待脚本执行完成.JavaS ...
- Python学习--05函数
Python函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.我们已经知道Python提供了许多内建函数,比如print().但我们 ...