文档章节

JDBC的介绍和数据库的连接

凯哥学堂
 凯哥学堂
发布于 2017/08/24 15:02
字数 1400
阅读 11
收藏 0

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。

JDBC的介绍:

1.JDBC设计理念: java依赖数据库去存储程序需要的数据,我们用java写好一个程序后,我们会把这个程序所需要的数据都存储到数据库中,当客户运行程序时,程序需要读取数据库中的数据,实现这个操作的就是JDBC。而为了规范,为了统一管理,把责任都转给数据库开发商(在接口中详细讲解过),java只负责写出一系列的接口,至于怎么去实现【学Java,到凯哥学堂kaige123.com】这些接口,那就都是数据库开发商的事情了,所以JDBC API中除了有一个操作类其他都是接口。

2.什么是驱动类:

数据库开发商为了能让java程序连接到自己的数据库上,他们就必须要自己写实现这些接口的类,然后打成jar包交给程序员,这样只要程序员将这些jar包加入到工程中去,那这个程序就可以读取数据库里面的数据了。而这些实现接口的操作类就被称为驱动类。

3.JDBC常用接口介绍(在java.sql包下面):

DirverManager(驱动管理员):这是一个操作类,用于创建Connection对象。
Connection:数据库连接对象
Statement:SQL执行对象
PreparedStatement:SQL预处理执行对象
ResultSet:查询的结果集
ResultSetMetaData:查询表结构
CallableStatement:存储过程调用

连接数据库步骤:

1.要连接什么数据库就去找什么数据库的驱动然后添加到工程中去,其实就是下载相应的jar包(下面以连接MySQL数据库为例):

1.1Maven工程:

去中央库找到此jar包,在pom中添加依赖即可:

image

1.2普通java工程:

找到工程jar包,将其复制到工程中,然后选中工程中的这个jar包,右键点击添加到Build Path中即可,jar包可自行上网下载,此处本人采用的是上述Maven工程下载下来的jar包。

注意:如果想删除此jar包,需先选中对应的那个小瓶子图案然后右键选择remove from build path,再删除粘贴进去的jar包即可。

2启动数据库,保证数据库可以网络连接方式

3加载驱动

3.1加载驱动的原理和目的:加载驱动实际上就是为了加载Driver类,这样Driver类里面的静态块就会执行,执行后就会马上注册驱动到驱动管理员类中。下图是Driver类里面的内容:

image

所以首先我们要加载Driver类:加载类有多种方式,可以new它的对象,可以用专门加载类的方法Class.forName()等,一般我们都倾向于使用加载类的方法,代码如下图:

image

3.2有些数据库其实已经自动帮我们加载Driver类了,所以就算我们在代码中不加载Driver类,运行时也会自动帮我们加载,如MySQL和Oracle数据库就是这样的。

3.3如何判断数据库有没有自动帮我们加载Driver类:在数据库jar包中看看有没有在META-INF/servies目录下写着自动加载的文件。以MySQL为例,在其目录下找到了java.sql.Driver文件,里面内容如下:

image

4.使用DriverManager管理员,创建Connection对象

4.1在创建对象时,我们需要传进三个参数:url,用户名,密码

4.2 url:用来告诉类连接的是什么数据库,服务器的地址和端口,数据库名字以及其它设置(如字体设置之类的)

4.3 MySQL中url的写法:

4.3.1默认本地和默认的3306端口:

jdbc:mysql:///数据库名字

4.3.2自定义:

jdbc:mysql://服务器地址:服务器端口/数据库名字
如果用此种方式写默认的那就是
jdbc:mysql://localhost(写本地地址):3306/mysql

4.3.3解决中文乱码问题(如果数据库里的是中文而导出来的不是中文或者加进去的是中文,但在数据库中却是以乱码的形式存在则可以用此种写法解决)

jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8

注意:此处设置的字符集和数据库中的字符集要一致,这里是UTF-8,那么数据库中也必须是UTF-8。

4.4代码实现:

image

5.各种数据库连接的代码提示要点:

oracle数据库
    		driverClass:oracle.jdbc.driver.OracleDriver
    		url:jdbc:oracle:thin:@127.0.0.1:1521:dbname
mysql数据库
    		driverClass:com.mysql.jdbc.Driver

(PS:有的时候,mysql的驱动类也也会看到使用org.gjt.mm.mysql.Driver 的情况,org.gjt.mm.mysql.Driver是早期的驱动名称,后来就改名为com.mysql.jdbc.Driver,现在一般都推荐使用 com.mysql.jdbc.Driver。在最新版本 的mysql jdbc驱动中,为了保持对老版本的兼容,仍然保留了 org.gjt.mm.mysql.Driver,但是实际上 org.gjt.mm.mysql.Driver中调用了 com.mysql.jdbc.Driver,因此现在这两个驱动没有什么区别。)

url:jdbc:mysql://localhost:3306/mydb
DB2数据库
    		driverClass:com.ibm.db2.jcc.DB2Driver
    		url:jdbc:db2://127.0.0.1:50000/dbname
sybase数据库
    		driverClass:com.sybase.jdbc.SybDriver
    		url:jdbc:sybase:Tds:localhost:5007/dbname
PostgreSQL数据库
   		 driverClass:org.postgresql.Driver
   		 url:jdbc:postgresql://localhost/dbname
Sql Server2000数据库
    		driverClass:com.microsoft.jdbc.sqlserver.SQLServerDriver
    		url:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbname
Sql Server2005数据库
    		driverClass:com.microsoft.sqlserver.jdbc.SQLServerDriver
    	url:jdbc:sqlserver://localhost:1433; DatabaseName=dbname

© 著作权归作者所有

上一篇: -Java-泛型
下一篇: -Java-JDBC入门
凯哥学堂
粉丝 18
博文 316
码字总数 284948
作品 0
东城
程序员
私信 提问
Android———利用JDBC连接服务器数据库

1、Android平台下与服务器数据库通信的方法 在Android平台下,连接电脑服务器的MySQL、PostgreSQL、Oracle、Sybase、Microsoft SQLServer等数据库管理系统DBMS(database management system),...

xiahuawuyu
2012/10/10
1K
1
使用 JDBC 连接不同版本 DB2 数据库的兼容性问题

本文通过实验介绍了 JDBC 应用在不同版本 DB2 系统之间迁移的问题,探讨彼此的兼容性,并就存在的问题给出了解决办法。 关系数据库在您的电子商务应用中一定扮演着不可或缺的重要角色。DB2 是...

红薯
2008/11/14
1K
1
在tomcat下context.xml中配置各种数据库连接池(转)

Tomcat6的服务器配置文件放在 ${tomcat6}/conf 目录底下。我们可以在这里找到 server.xml 和 context.xml。当然,还有其他一些资源文件。但是在在本文中我们只用得上这两个,其他的就不介绍了...

徐龙
2012/07/02
3.6K
4
JAVA之JDBC简单事务处理

1、什么是Java事务 通常观念认为,事务与数据库有关。事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务的正确执行使得数据库从一种状态转换成另一种状态...

火龙战士
2015/08/17
290
5
析评数据库连接池(创世纪新篇)

学习Java语言,对于数据库连接池不陌生啦。例如,一个简单的数据库应用,由于对于数据库的访问不是很频繁。这时可以简单地在需要访问数据库时,就新创建一个连接,用完后就关闭它,这样做也不...

crossmix
2015/08/21
31
0

没有更多内容

加载失败,请刷新页面

加载更多

JS基础-该如何理解原型、原型链?

JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对这个...

OBKoro1
今天
8
0
高防CDN的出现是为了解决网站的哪些问题?

高防CDN是为了更好的服务网络而出现的,是通过高防DNS来实现的。高防CDN是通过智能化的系统判断来路,再反馈给用户,可以减轻用户使用过程的复杂程度。通过智能DNS解析,能让网站访问者连接到...

云漫网络Ruan
今天
14
0
OSChina 周一乱弹 —— 熟悉的味道,难道这就是恋爱的感觉

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoshiyue :好久没分享歌了分享张碧晨的单曲《今后我与自己流浪》 《今后我与自己流浪》- 张碧晨 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
今天
3.1K
24
SpringBoot中 集成 redisTemplate 对 Redis 的操作(二)

SpringBoot中 集成 redisTemplate 对 Redis 的操作(二) List 类型的操作 1、 向列表左侧添加数据 Long leftPush = redisTemplate.opsForList().leftPush("name", name); 2、 向列表右......

TcWong
今天
47
0
排序––快速排序(二)

根据排序––快速排序(一)的描述,现准备写一个快速排序的主体框架: 1、首先需要设置一个枢轴元素即setPivot(int i); 2、然后需要与枢轴元素进行比较即int comparePivot(int j); 3、最后...

FAT_mt
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部