在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-加载数据库驱动,取得数据库连接的更多相关文章

  1. java 加载数据库驱动

    JDBC编程步骤见 JDBC编程步骤 JDBC编程的第一步是加载数据库驱动,使用Class类的forName()方法,Class.forName("com.mysql.jdbc.Driver ...

  2. JDBC 学习笔记(四)—— JDBC 加载数据库驱动,获取数据库连接

    1. 加载数据库驱动 通常来说,JDBC 使用 Class 类的 forName() 静态方法来加载驱动,需要输入数据库驱动代表的字符串. 例如: 加载 MySQL 驱动: Class.forName ...

  3. java加载jdbc驱动三种方式的比较

    一.引言 平时连接数据库的时候首先要加载jdbc驱动,这一步骤其实有三种方式,他们的区别?优劣? 二.快速了解三种加载方式 Class.forName(“com.mysql.jdbc.Driver”) ...

  4. jdbc 加载数据库驱动如何破坏双亲委托模式

    导读      通过jdbc链接数据库,是每个学习Java web 方向的人必然一开始会写的代码,虽然现在各路框架都帮大家封装好了jdbc,但是研究一下jdbc链接的套路还是很意义     术语以及相 ...

  5. JDBC:加载数据库驱动、连接数据库(详细讲解)

    加载数据库驱动: 1)由于Java是一个纯面向对象语言,任何事物在其中都必须抽象成类或者类对象,数据库也不例外,JDBC同样也把数据库抽象成面向对象的结构: 2)JDBC将整个数据库驱动器在底层抽象成 ...

  6. ThinkCMF项目部署出现无法加载数据库驱动解决方案

    最近有个TP项目刚从从本地部署到阿里云服务器上,出现了无法加载数据库驱动的错误,提示 :( 无法加载数据库驱动: Think\Db\Driver 这里分享一下出现该错误的解决步骤: 首先记得项目部署到 ...

  7. JDBC加载数据库驱动的方式

    JDBC作为数据库访问的规范接口,其中只是定义一些接口.具体的实现是由各个数据库厂商来完成. 一.重要的接口: 1.public interface Driver 每个驱动程序类必须实现的接口.Jav ...

  8. springboot启动不能加载数据库驱动Failed to determine a suitable driver class

    SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/G:/sharp/repo ...

  9. java加载机制整理

    本文是根据李刚的<疯狂讲义>作的笔记,程序有的地方做了修改,特别是路径,一直在混淆,浪费了好多时间!!希望懂的同学能够指导本人,感激尽............ 1.jvm 和 类的关系 当 ...

随机推荐

  1. JVM类加载

    JVM的类加载机制就是:JVM把描述类的class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被JVM直接使用的Java类型 ClassLoader JVM中的ClassLoade ...

  2. 初识的Spring Mvc-----原理

    一.Spring Mvc简介 Spring Mvc(Spring Web Mvc) 属于表现层的框架. 二.Spring结构图 Spring Mvc是Spring框架里面web模块的一部分,是在Spr ...

  3. 新技术≠颠覆:CIO 要有战略耐心

    新技术≠颠覆:CIO 要有战略耐心 大数据,云时代,互联网思维, 物联网--最近一两年,这些字眼一次次地出现在各种大大小小的CIO会议上和他们的私下交流圈子里,作为对新技术最敏感的人群,一方面他们迫切 ...

  4. BAT“搅局”B2B市场,CIO们准备好了吗?

    "CIO必须灵活构建其所在企业的IT系统,深入业务,以应对日新月异的数字化业务环境."   BAT军团"搅局"B2B市场,CIO们准备好了吗? 庞大的企业级市场 ...

  5. 找到第k个最小元----快速选择

    此算法借用快速排序算法. 这个快速选择算法主要利用递归调用,数组存储方式.包含3个文件,头文件QuickSelect.h,库函数QuickSelect.c,测试文件TestQuickSelect. 其 ...

  6. weinre- 调试移动端页面

    相信很多前端的小伙伴一定会遇到一个问题, 比如我编写完一个页面,某个地方需要进行调整细节或者是哪个地方怎么调整都不对,在pc端还好,有google,firefox之类可以调节页面的工具,虽说这些工具有 ...

  7. Concurrency

    <Concurrency>:http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html <Java ...

  8. CSharpGL(24)用ComputeShader实现一个简单的图像边缘检测功能

    CSharpGL(24)用ComputeShader实现一个简单的图像边缘检测功能 效果图 这是红宝书里的例子,在这个例子中,下述功能全部登场,因此这个例子可作为使用Compute Shader的典型 ...

  9. Uncaught RangeError: Maximum call stack size exceeded 调试日记

    异常处理汇总-前端系列 http://www.cnblogs.com/dunitian/p/4523015.html 开发道路上不是解决问题最重要,而是解决问题的过程,这个过程我们称之为~~~调试 记 ...

  10. ILMerge合并多个DLL

    序言 如果你的项目要提供多个dll给别人用,那么不妨让你的dll合并为一个,让别人看起来简洁,引用起来不会过于繁琐. 本篇比较少,但也算是比较实用吧. 下载微软的辅助工具ILMerge Imerge下 ...