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

加载数据库驱动:

1)由于Java是一个纯面向对象语言,任何事物在其中都必须抽象成类或者类对象,数据库也不例外,JDBC同样也把数据库抽象成面向对象的结构;

2)JDBC将整个数据库驱动器在底层抽象成一个对象(即驱动器对象),所有对数据库的操作都可以通过该对象进行;

3)只不过数据库驱动对象和普通的Java对象有所不同:

  i. 首先大多数普通的Java对象都是运行该Java程序前不存在的,而是运行的时候临时创建的,程序退出后这些对象也随之释放;

  ii. 但数据库不一样,数据库往往是不依赖程序运行的,数据库通常都是24小时持续运行,只不过应用程序可以访问它而已,因此数据库对象不能像普通对象那样从无到有地“创建”;

  iii. 也就是说一个在应用程序运行之前就已经存在并且正常运行的数据库实例如何在Java程序中访问呢?

4)加载数据库驱动的方法:

  i. 加载数据库驱动其实就是将操作系统中正在运行的数据库进程(实例)转化成Java对象供Java程序使用(操作数据库);

  ii. 这里首先要了解以下类驱动器的概念:

      a. 其实在Java中任何类(Object、String等)想要正常运行,底层都要有相应的驱动器驱动它;

      b. 但是我们平时看不出来这些类对象需要什么驱动器驱动啊!那是因为这些基础类的驱动器就是JVM虚拟机本身,其驱动的加载是在底层伴随着JVM的启动进行的,都对用户隐藏起来了,所以你看不到;

      c. 而那些不依赖虚拟机驱动的程序(比如非常典型的就是数据库程序、大多数图形程序,基本都是用C/C++编写,肯定不能靠JVM驱动)想在Java中访问就必须自己手动编写加载驱动器的代码了!!

  iii. &#x624B;&#x52A8;&#x52A0;&#x8F7D;&#x7C7B;&#x7684;&#x9A71;&#x52A8;&#x5668;&#x2014;&#x2014;&#x4F7F;&#x7528;Class&#x7C7B;&#x7684;forName&#x9759;&#x6001;&#x65B9;&#x6CD5;&#xFF1A;static Class<?> Class.forName(String className);

      a. className&#x5C31;&#x662F;&#x90A3;&#x4E2A;&#x4E0D;&#x4F9D;&#x8D56;JVM&#x9A71;&#x52A8;&#x7684;&#x5916;&#x90E8;&#x8FDB;&#x7A0B;&#x7684;Java&#x7C7B;&#x540D;&#xFF0C;&#x8FD9;&#x4E2A;&#x7C7B;&#x540D;&#x5FC5;&#x987B;&#x7B26;&#x5408;Java&#x547D;&#x540D;&#x89C4;&#x5219;&#xFF0C;&#x4F8B;&#x5982;&#x201C;com.xxx.Xxx"&#x4E4B;&#x7C7B;&#x7684;&#xFF1B;

      b. &#x4F60;&#x5728;Java&#x4E2D;&#x8BBF;&#x95EE;&#x5916;&#x90E8;&#x8FDB;&#x7A0B;&#xFF08;&#x5C06;&#x5916;&#x90E8;&#x8FDB;&#x7A0B;&#x62BD;&#x8C61;&#x6210;Java&#x7C7B;&#x6216;&#x8005;&#x5BF9;&#x8C61;&#xFF09;&#x8FD8;&#x4E00;&#x5B9A;&#x8981;&#x6709;Java&#x7C7B;&#x540D;&#xFF1F;&#x90A3;&#x8FD9;&#x4E2A;&#x7C7B;&#x540D;&#x662F;&#x4E0D;&#x662F;&#x8981;&#x4E8B;&#x5148;&#x5C31;&#x51C6;&#x5907;&#x597D;&#x54AF;&#xFF1F;

      c. &#x662F;&#x7684;&#xFF01;&#x5E76;&#x4E0D;&#x662F;&#x4EFB;&#x4F55;&#x5916;&#x90E8;&#x8FDB;&#x7A0B;&#x90FD;&#x53EF;&#x4EE5;&#x88AB;Java&#x8BBF;&#x95EE;&#xFF0C;&#x60F3;&#x8981;&#x88AB;Java&#x8BBF;&#x95EE;&#x5C31;&#x5FC5;&#x987B;&#x8BA9;&#x90A3;&#x4E2A;&#x7A0B;&#x5E8F;&#x81EA;&#x5DF1;&#x51C6;&#x5907;&#x597D;&#x88AB;Java&#x8C03;&#x7528;&#x7684;&#x63A5;&#x53E3;&#xFF0C;&#x5E76;&#x4E8B;&#x5148;&#x547D;&#x540D;&#x597D;Java&#x7C7B;&#x540D;&#x624D;&#x884C;&#xFF0C;&#x800C;&#x7A0B;&#x5E8F;&#x51C6;&#x5907;&#x597D;&#x7684;Java&#x63A5;&#x53E3;&#x5C31;&#x662F;&#x8BE5;&#x7A0B;&#x5E8F;&#x7684;Java&#x9A71;&#x52A8;&#x5668;&#xFF08;&#x8BA9;JVM&#x63A7;&#x5236;&#x7A0B;&#x5E8F;&#x884C;&#x4E3A;&#x7684;&#x4E1C;&#x897F;&#x5C31;&#x662F;Java&#x9A71;&#x52A8;&#x5668;&#xFF09;&#xFF1B;

      d. &#x56E0;&#x6B64;&#x6570;&#x636E;&#x5E93;&#x5382;&#x5546;&#x5FC5;&#x987B;&#x81EA;&#x884C;&#x522B;&#x5199;&#x597D;&#x6570;&#x636E;&#x5E93;&#x7684;Java&#x9A71;&#x52A8;&#x5668;&#xFF08;&#x79F0;&#x4F5C;&#x6570;&#x636E;&#x5E93;Connector&#xFF0C;&#x5373;&#x8FDE;&#x63A5;&#x5668;&#xFF0C;&#x7528;&#x4E8E;&#x548C;Java&#x7A0B;&#x5E8F;&#x8FDE;&#x63A5;&#xFF09;&#xFF0C;&#x5E76;&#x51C6;&#x5907;&#x597D;&#x7C7B;&#x540D;&#xFF0C;&#x597D;&#x8BA9;Class.forName&#x52A0;&#x8F7D;&#x5B83;&#xFF1B;

  iv. forName&#x7684;&#x52A0;&#x8F7D;&#x539F;&#x7406;&#xFF1A;

      a. &#x9996;&#x5148;&#x4EFB;&#x610F;&#x4E00;&#x4E2A;&#x63D0;&#x4F9B;Java&#x63A5;&#x53E3;&#x7684;&#x7A0B;&#x5E8F;&#x90FD;&#x4F1A;&#x62E5;&#x6709;&#x4E00;&#x4E2A;Java&#x7C7B;&#x540D;&#xFF08;&#x52A0;&#x8F7D;&#x5230;JVM&#x4E2D;&#x5C31;&#x662F;&#x7528;&#x8BE5;&#x7C7B;&#x540D;&#x6765;&#x8BBF;&#x95EE;&#x8BE5;&#x7A0B;&#x5E8F;&#x5B9E;&#x4F8B;&#x7684;&#xFF09;&#xFF1B;

      b. &#x8FD9;&#x6837;&#x7684;&#x7A0B;&#x5E8F;&#x8FD0;&#x884C;&#x540E;&#xFF0C;&#x8FD9;&#x4E2A;Java&#x7C7B;&#x540D;&#x5C31;&#x4F1A;&#x88AB;&#x8BB0;&#x5F55;&#x5230;&#x6539;&#x7A0B;&#x5E8F;&#x7684;&#x8FDB;&#x7A0B;&#x4FE1;&#x606F;&#x4E2D;&#xFF08;&#x800C;&#x6539;&#x7A0B;&#x5E8F;&#x7684;Java&#x63A5;&#x53E3;&#xFF08;&#x9A71;&#x52A8;&#x5668;&#xFF09;&#x7684;&#x53E5;&#x67C4;&#x4E5F;&#x4F1A;&#x88AB;&#x8BB0;&#x5F55;&#x5230;&#x8FDB;&#x7A0B;&#x4FE1;&#x606F;&#x4E2D;&#xFF09;&#xFF1B;

      c. forName&#x4F20;&#x5165;&#x8BE5;&#x7C7B;&#x540D;&#x4EE5;&#x540E;&#x5C31;&#x4F1A;&#x5230;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7684;&#x8FDB;&#x7A0B;&#x8868;&#x4E2D;&#x67E5;&#x627E;&#x5177;&#x6709;&#x8BE5;Java&#x7C7B;&#x540D;&#x7684;&#x7EBF;&#x7A0B;&#xFF1B;

      d. &#x627E;&#x5230;&#x5BF9;&#x5E94;&#x7684;&#x8FDB;&#x7A0B;&#x540E;&#x5C31;&#x4F1A;&#x627E;&#x5230;&#x8BE5;&#x8FDB;&#x7A0B;&#x5BF9;&#x5E94;&#x7684;Java&#x9A71;&#x52A8;&#xFF0C;&#x7136;&#x540E;&#x5C06;&#x8BE5;&#x9A71;&#x52A8;&#x52A0;&#x8F7D;&#x8FDB;JVM&#xFF1B;

      e. &#x4E4B;&#x540E;&#x5C31;&#x53EF;&#x4EE5;&#x5728;Java&#x7A0B;&#x5E8F;&#x4E2D;&#x901A;&#x8FC7;&#x8FD9;&#x4E2A;&#x7C7B;&#x540D;&#xFF08;&#x6216;&#x8005;&#x5BF9;&#x8C61;&#xFF09;&#x6765;&#x8C03;&#x7528;&#x8BE5;&#x8FDB;&#x7A0B;&#x7684;&#x529F;&#x80FD;&#xFF0C;&#x6216;&#x8005;&#x8BBF;&#x95EE;&#x8FDB;&#x7A0B;&#x4E2D;&#x7684;&#x6570;&#x636E;&#x4E86;&#xFF1B;

5)数据库厂商对驱动类名的命名:

  i. &#x5382;&#x5546;&#x4E4B;&#x95F4;&#x5404;&#x4E0D;&#x76F8;&#x540C;&#xFF0C;&#x800C;&#x4E14;&#x4E5F;&#x6CA1;&#x6709;&#x89C4;&#x5F8B;&#x53EF;&#x5FAA;&#xFF0C;&#x56E0;&#x6B64;&#x5FC5;&#x987B;&#x8981;&#x67E5;&#x9605;&#x76F8;&#x5E94;&#x5382;&#x5546;&#x7684;JDBC&#x624B;&#x518C;&#x624D;&#x80FD;&#x77E5;&#x9053;&#xFF1B;

  ii. MySQL&#x7684;&#x547D;&#x540D;&#xFF1A;com.sql.jdbc.Driver

  iii. Oracle&#x7684;&#x547D;&#x540D;&#xFF1A;oracle.jdbc.driver.OracleDriver

  iv. &#x4ECE;&#x547D;&#x540D;&#x7684;&#x5305;&#x8DEF;&#x5F84;&#x6765;&#x770B;&#xFF0C;&#x5404;&#x4E2A;&#x5382;&#x5546;&#x9A71;&#x52A8;&#x7684;&#x5B9E;&#x73B0;&#x5DEE;&#x5F02;&#x8F83;&#x5927;&#xFF1B;

  &#x56E0;&#x6B64;MySQL&#x6570;&#x636E;&#x5E93;&#x7684;&#x52A0;&#x8F7D;&#x5C31;&#x662F;&#xFF1A;Class.forName("com.sql.jdbc.Driver");

6)准备好数据库连接器:

  i. &#x5FC5;&#x987B;&#x4E8B;&#x5148;&#x5C06;&#x6570;&#x636E;&#x5E93;&#x7684;JDBC-Connector&#x52A0;&#x5165;&#x5230;CLASSPATH&#x8DEF;&#x5F84;&#x5F53;&#x4E2D;&#xFF0C;Connector&#x7531;&#x6570;&#x636E;&#x5E93;&#x5382;&#x5546;&#x63D0;&#x4F9B;&#xFF0C;&#x800C;MySQL&#x7684;JDBC-Connector&#x6587;&#x4EF6;&#x662F;mysql-connector-java-&#x7248;&#x672C;&#x53F7;-bin.jar&#xFF1B;

  ii. &#x539F;&#x56E0;&#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x6570;&#x636E;&#x5E93;&#x7684;JDBC&#x9A71;&#x52A8;&#x5FC5;&#x987B;&#x8981;&#x8FD0;&#x884C;&#x8D77;&#x6765;&#x624D;&#x80FD;&#x8D77;&#x5230;&#x4F5C;&#x7528;&#xFF0C;&#x5728;Java&#x4E2D;&#x5C31;&#x662F;&#x8981;&#x8FD0;&#x884C;&#x8BE5;&#x7C7B;&#xFF0C;&#x800C;&#x8FD0;&#x884C;&#x4E00;&#x4E2A;&#x7C7B;&#x9996;&#x5148;&#x4F1A;&#x60F3;&#x5230;&#x547D;&#x4EE4;"java &#x8981;&#x8FD0;&#x884C;&#x7684;&#x7C7B;&#x7684;&#x7C7B;&#x540D;&#x201C;&#x4E86;&#xFF0C;&#x65E2;&#x7136;&#x8981;&#x76F4;&#x63A5;&#x6267;&#x884C;&#x8BE5;&#x547D;&#x4EE4;&#xFF0C;&#x90A3;&#x5C31;&#x5FC5;&#x987B;&#x5F97;&#x5C06;&#x76EE;&#x6807;&#x7C7B;&#x7684;&#x8DEF;&#x5F84;&#x6DFB;&#x52A0;&#x5230;CLASSPATH&#x4E2D;&#x53BB;&#x624D;&#x884C;&#xFF0C;&#x56E0;&#x6B64;&#x5FC5;&#x987B;&#x5148;&#x5C06;&#x4E0A;&#x9762;&#x8BB2;&#x7684;jar&#x5305;&#x6DFB;&#x52A0;&#x5230;CLASSPATH&#x8DEF;&#x5F84;&#x4E2D;&#x53BB;&#x624D;&#x884C;&#xFF1B;

  iii. &#x5728;Eclipse&#x4E2D;&#x8FD9;&#x6837;&#x8BBE;&#x7F6E;&#xFF1A;window -> preferences -> java -> install jres -> &#x9009;&#x4E2D;&#x5F53;&#x524D;&#x91C7;&#x7528;&#x7684;JRE&#x70B9;&#x51FB;edit -> add external jars -> &#x9009;&#x62E9;jar&#x5305;&#x8DEF;&#x5F84;&#x4FDD;&#x5B58;&#x5373;&#x53EF;&#xFF1B;

Original: https://www.cnblogs.com/l-926/p/15241693.html
Author: 小新超人
Title: JDBC:加载数据库驱动、连接数据库(详细讲解)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/570233/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球