JDBC(尚硅⾕宋红康⽼师笔记)
JDBC核⼼技术
讲师:宋红康
微博:尚硅⾕-宋红康
第1章:JDBC概述
1.1 数据的持久化吞的组词
持久化(persistence):把数据保存到可掉电式存储设备中以供之后使⽤。⼤多数情况下,特别是企业级应⽤,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,⽽持久化的实现过程⼤多通过各种关系数据库来完成。
持久化的主要应⽤是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘⽂件、XML数据⽂件中。
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-uJlrcXKx-1615366751819)(尚硅⾕_宋红康_JDBC.assets/1566741430592.png)]
1.2 Java中的数据存储技术
在Java中,数据库存取技术可分为如下⼏类:
JDBC直接访问数据库
JDO (Java Data Object )技术
第三⽅O/R⼯具,如Hibernate, Mybatis 等
JDBC是java访问数据库的基⽯,JDO、Hibernate、MyBatis等只是更好的封装了JDBC。
1.3 JDBC介绍
JDBC(Java Database Connectivity)是⼀个独⽴于特定数据库管理系统、通⽤的SQL数据库存取和操作的公共接⼝(⼀组API),定义了⽤来访问数据库的标准Java类库,(java.sql,javax.sql)使⽤这些类库可以以⼀种标准的⽅法、⽅便地访问数据库资源。
JDBC为访问不同的数据库提供了⼀种统⼀的途径,为开发者屏蔽了⼀些细节问题。
JDBC的⽬标是使Java程序员使⽤JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使
得程序员⽆需对特定的数据库系统的特点有过多的了解,从⽽⼤⼤简化和加快了开发过程。
如果没有JDBC,那么Java程序访问数据库时是这样的:
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-I8OG8ogj-1615366751822)(尚硅⾕_宋红康
_JDBC.assets/1555575760234.png)]
有了JDBC,Java程序访问数据库时是这样的:
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-Sa9XG2U0-1615366751824)(尚硅⾕_宋红康
_JDBC.assets/1555575981203.png)]
总结如下:
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-U5iYliU5-1615366751827)(尚硅⾕_宋红康
_JDBC.assets/1566741692804.png)]
1.4 JDBC体系结构
JDBC接⼝(API)包括两个层次:
⾯向应⽤的API:Java API,抽象接⼝,供应⽤程序开发⼈员使⽤(连接数据库,执⾏SQL语句,获得结果)。
⾯向数据库的API:Java Driver API,供开发商开发数据库驱动程序⽤。
JDBC是sun公司提供⼀套⽤于数据库操作的接⼝,java程序员只需要⾯向这套接⼝编程即可。
不同的数据库⼚商,需要针对这套接⼝,提供不同实现。不同的实现的集合,即为不同数据库的驱动。 ————⾯向接⼝编程
1.5 JDBC程序编写步骤
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-jnUrEstJ-1615366751828)(尚硅⾕_宋红康
_JDBC.assets/1565969323908.png)]
补充:ODBC(Open Database Connectivity,开放式数据库连接),是微软在Windows平台下推出的。使⽤者在程序中只需要调⽤ODBC API,由 ODBC 驱动程序将调⽤转换成为对特定的数据库的调⽤请求。
第2章:获取数据库连接
2.1 要素⼀:Driver接⼝实现类
2.1.1 Driver接⼝介绍
java.sql.Driver 接⼝是所有 JDBC 驱动程序需要实现的接⼝。这个接⼝是提供给数据库⼚商使⽤的,不同数据库⼚商提供不同的实现。
在程序中不需要直接去访问实现了 Driver 接⼝的类,⽽是由驱动程序管理器类(java.sql.DriverManager)去调⽤这些Driver实现。
Oracle的驱动:oracle.jdbc.driver.OracleDriver
mySql的驱动: sql.jdbc.Driver
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-T8FFRrxC-1615366751830)(尚硅⾕_宋红康
_JDBC.assets/1555576157618.png)]
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-n0r1G81E-1615366751831)(尚硅⾕_宋红康
_JDBC.assets/1555576170074.png)]
将上述jar包拷贝到Java⼯程的⼀个⽬录中,习惯上新建⼀个lib⽂件夹。
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-tU5vZ8RZ-1615366751832)(尚硅⾕_宋红康
_JDBC.assets/1566134718955.png)]
在驱动jar上右键–>Build Path–>Add to Build Path
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-0Kwmd0sa-1615366751833)(尚硅⾕_宋红康
_JDBC.assets/1566134781682.png)]
注意:如果是Dynamic Web Project(动态的web项⽬)话,则是把驱动jar放到WebContent(有的开发⼯具叫WebRoot)⽬录中的WEB-INF⽬录中的lib⽬录下即可
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-985eTM2V-1615366751834)(尚硅⾕_宋红康
_JDBC.assets/1566135290460.png)]
2.1.2 加载与注册JDBC驱动
加载驱动:加载 JDBC 驱动需调⽤ Class 类的静态⽅法 forName(),向其传递要加载的 JDBC 驱动的类名顺风顺水顺财神
Class.forName(“sql.jdbc.Driver”);
注册驱动:DriverManager 类是驱动程序管理器类,负责管理驱动程序
使⽤sql.jdbc.Driver)来注册驱动
通常不⽤显式调⽤ DriverManager 类的 registerDriver() ⽅法来注册驱动程序类的实例,因为 Driver 接⼝的驱动程序类都包含了静态代码块,在这个静态代码块中,会调⽤ isterDriver() ⽅法来注册⾃⾝的⼀个实例。下图是MySQL的Driver实现类的源码:
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-ZdxdKrju-1615366751835)(尚硅⾕_宋红康_JDBC.assets/1566136831283.png)]
2.2 要素⼆:URL
JDBC URL ⽤于标识⼀个被注册的驱动程序,驱动程序管理器通过这个 URL 选择正确的驱动程序,从⽽建⽴到数据库的连接。
JDBC URL的标准由三部分组成,各部分间⽤冒号分隔。
jdbc:⼦协议:⼦名称
协议:JDBC URL中的协议总是jdbc
⼦协议:⼦协议⽤于标识⼀个数据库驱动程序
⼦名称:⼀种标识数据库的⽅法。⼦名称可以依不同的⼦协议⽽变化,⽤⼦名称的⽬的是为了定位数据库提供⾜够的信息。包含主机名(对应服务端的ip地址),端⼝号,数据库名
举例:
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-ABL9gd1s-1615366751836)(尚硅⾕_宋红康_JDBC.assets/1555576477107.png)]
⼏种常⽤数据库的 JDBC URL
MySQL的连接URL编写⽅式:
jdbc:mysql://主机名称:mysql服务端⼝号/数据库名称?参数=值&参数=值
jdbc:mysql://localhost:3306/atguigu
jdbc:mysql://localhost:3306/atguigu**?useUnicode=true&characterEncoding=utf8**(如果JDBC程序与服务器端的字符集不⼀致,会导致乱码,那么可以通过参数指定服务器端的字符集)
jdbc:mysql://localhost:3306/atguigu?user=root&password=123456
Oracle 9i的连接URL编写⽅式:
jdbc:oracle:thin:@主机名称:oracle服务端⼝号:数据库名称
jdbc:oracle:thin:@localhost:1521:atguigu
SQLServer的连接URL编写⽅式:
jdbc:sqlserver://主机名称:sqlserver服务端⼝号:DatabaseName=数据库名称
jdbc:sqlserver://localhost:1433:DatabaseName=atguigu
2.3 要素三:⽤户名和密码
user,password可以⽤“属性名=属性值”⽅式告诉数据库
可以调⽤ DriverManager 类的 getConnection() ⽅法建⽴到数据库的连接
2.4 数据库连接⽅式举例
2.4.1 连接⽅式⼀
@Test
public void testConnection1(){
try{
热血无赖配置要求高吗//1.提供java.sql.Driver接⼝实现类的对象
Driver driver =null;
小学生评语集锦driver =new Driver();
//2.提供url,指明具体操作的数据
String url ="jdbc:mysql://localhost:3306/test";
//3.提供Properties的对象,指明⽤户名和密码
Properties info =new Properties();
info.setProperty("user","root");
info.setProperty("password","abc123");
//4.调⽤driver的connect(),获取连接
Connection conn = t(url, info);
System.out.println(conn);
}catch(SQLException e){
e.printStackTrace();
}
}
说明:上述代码中显式出现了第三⽅数据库的API
2.4.2 连接⽅式⼆
@Test
public void testConnection2(){
try{
//1.实例化Driver
String className ="sql.jdbc.Driver";七年级英语教学总结
Class clazz = Class.forName(className);
Driver driver =(Driver) wInstance();
//2.提供url,指明具体操作的数据
String url ="jdbc:mysql://localhost:3306/test";
//3.提供Properties的对象,指明⽤户名和密码
Properties info =new Properties();
info.setProperty("user","root");
info.setProperty("password","abc123");
//4.调⽤driver的connect(),获取连接
Connection conn = t(url, info);
System.out.println(conn);
}catch(Exception e){
e.printStackTrace();
}
}
说明:相较于⽅式⼀,这⾥使⽤反射实例化Driver,不在代码中体现第三⽅数据库的API。体现了⾯向接⼝编程思想。
2.4.3 连接⽅式三
@Test
public void testConnection3(){
try{
//1.数据库连接的4个基本要素:
String url ="jdbc:mysql://localhost:3306/test";
怎样设置开机启动项String user ="root";
String password ="abc123";
String driverName ="sql.jdbc.Driver";
//2.实例化Driver
Class clazz = Class.forName(driverName);
Driver driver =(Driver) wInstance();
//3.注册驱动
//4.获取连接
Connection conn = Connection(url, user, password);
System.out.println(conn);
}catch(Exception e){
e.printStackTrace();
}
}
说明:使⽤DriverManager实现数据库的连接。体会获取连接必要的4个基本要素。
2.4.4 连接⽅式四
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论