(1) 什么是JDBC?
数据库供应商为自己的数据库产品各自设计了不同的协议。Sun公司想让Java应用程序能够跨数据库运行,提出了JDBC。说白了,JDBC就是Java为与数据库连接提供的一套标准通信技术(也有人认为,JDBC是Java连接数据库的API)。 有了它,我们所写的Java程序就可以很容易的不受具体数据库供应商的限制了。
(2) JDBC设计
Sun公司为了Java应用程序能与各种数据库正常通信,设计了一套标准数据库通信协议。
简单的说:这套通信标准包括三个部分:面向应用程序端的API,面向JDBC驱动器的API,以及一个JDBC驱动管理器。想要做到Java语言与数据库的通信,必须做到:
首先,数据库的供应商必须为数据库设计一个JDBC驱动器,这个驱动器一方面满足某一数据库的具体访问协议。另一方面必须满足JDBC驱动管理器API所提出的要求。这样,这个特定数据库的驱动程序就可以注册到驱动器管理器了。
然后,应用程序开发商只需要使用JDBC API,调用驱动管理器中指定的驱动程序就可以连接上某一数据库了。
这种数据库通信方式,对应用程序开发十分方便。我们的应用程序之需要改变被加载驱动程序的名称,其他的代码都不需要变化,就可以方便的从一个数据库产品移动到另一个数据库产品上。
另外,ODBC是Microsoft为C语言访问数据库提供的一套编程接口。如果数据库供应商只提供了ODBC驱动器。那么可以通过JDBC-ODBC桥来进行连接。
(3) JDBC连接实例
这里有一段JAVA应用程序连接MySql数据库的例子:
我们首先需要一个MySql的JDBC驱动程序: mysql-connector-java-5.1.6-bin.jar(见附件).
//连接数据库
public class SqlUtil
{
/**与特定数据库的连接*/
private static Connection conn=null;
/**数据库连接驱动程序,值为{@value}*/
private static String driverClassName="com.mysql.jdbc.Driver";
/**数据库URL,值为{@value}*/
private static String url="jdbc:mysql://127.0.0.1:3306/fcdb?useUnicode=true&characterEncoding=gbk";
/**数据库用户名,值为{@value}*/
private static String username = "xxxx";
/**数据库用户密码,值为{@value}*/
private static String password = "xxxx";
/**创建数据库连接*/
static{
try{
//动态加载mysql的驱动
Class.forName(driverClassName);
//DriverManager 类用于跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。
conn=DriverManager.getConnection(url,username,password);
}catch(Exception e){
e.printStackTrace(System.err);
}
}
}
/**获取数据库中数据*/
public static void getData(){
try{
Statement st=conn.createStatement();
String sql=".......";
ResultSet rs=st.executeQuery(sql);
rs.getString("name");
}catch(Exception e){
e.printStackTrace();
}
}
}
对于上面的例子。在《数据库编程(二)》中会有详细讲解。 这里提一点,上面的应用程序所使用的所有类,方法都是JDBC面向应用程序端提供的API,至于供应商所要使用的面向JDBC驱动程序的API都封装在mysql-connector-java-5.1.6-bin.jar里了。
这里我用别人的一段话,形象的阐述一下JDBC到底是什么,干什么用?
在这我就举个连接数据库的例子吧,我们JAVA程序员肯定会经常和数据库打交道,所以SUN公司肯定会给我们提供链接和操作数据库的方法吧,但是我们再仔细想想,全世界的数据库厂商不止一家吧!它里面的实现原理肯定也大有不同吧!那么SUN公司给你们每个数据库厂商都要写上一大堆的方法去连接和操作你,如果真的那么做了,SUN公司肯定会疯的,再说了谁知道以后还有什么新的数据库会出现,所以那样做肯定是相当不现实的,这时接口可就要发威了。SUN公司会提供大量的接口,里面会写好多空方法,SUN还会给这些方法起个比较有意义的名字,作用就是要让实现我这接口的类明白你要做什么事,但具体怎么做我就不管了,然后SUN会把这些接口都装到一个大盒子里(JDBC) 。如果哪家数据库厂商想跟我连接那你就去实现我这些接口然后你们自己去写大量的代码来实现我的所有的方法,这就是你们数据库厂商的事了,比如说SQLserver和oracle它们分别用不同的方法实现了SUN给的那些接口,然后把这些类再打成 jar包(驱动类),我们就可以通过这些包对相应的数据库进行操作了。这下发现JAVA接口的作用了吧!
分享到:
相关推荐
**Java Database Connectivity (JDBC)** 是Java编程语言中用于与各种数据库进行交互的一...通过阅读"解惑"系列的《jdbc入门通透说.pdf》,你将能全面了解并掌握JDBC的各个方面,为你的Java数据库编程之路打下坚实基础。
以上只是Java编程中的一部分知识点,实际上Java还有许多其他领域,如Spring框架、JDBC数据库操作、JPA实体映射、Maven构建工具、单元测试等。"Java解惑"这本书或者资源可能包含了这些内容的详细解答,通过学习和实践...
此外,Java EE(企业版)部分,如Servlet、JSP、JDBC、EJB、Spring、Hibernate等,是Java在Web开发中的重要应用。而Java SE(标准版)的最新特性,如Lambda表达式、Stream API、Optional类等,也是现代Java编程的...
- **JDBC**:连接数据库,执行SQL语句,处理结果集等基本操作。 - **JPA和Hibernate**:ORM框架的理解,实体关系映射和事务管理。 10. **网络编程** - **TCP/IP协议**:了解TCP和UDP协议的区别,以及Socket编程...
12. **数据库相关**:SQL基础,JDBC操作,事务处理,以及NoSQL数据库(如MongoDB)的了解。 13. **算法与数据结构**:虽然Java面试更侧重于实际应用,但基础的排序算法(如冒泡、快速、归并排序)和查找算法(如二...
5. **数据库操作**:JDBC的使用,以及ORM框架如Hibernate和MyBatis的介绍。 通过《JAVA解惑》,Java初学者和进阶者都能找到解决实际问题的方法,进一步提升自己的编程技能。这本书以实例驱动,理论结合实践,有助于...
10. **数据库相关**:SQL语句的使用,JDBC操作,以及数据库连接池的配置和使用。面试中可能会有SQL优化和数据库设计的问题。 通过"JAVA面试题解惑系列"的学习,不仅能帮助你巩固Java技术,还能提升你在面试中的表现...
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...
基于jsp+servlet+jdbc+mysql的javaweb项目. 集成了java基础相关知识. 进一步开发ioc容器(仿spring), dispatcher转发(仿springmvc)以及mapper映射(仿mybatis)功能. .zip项目工程资源经过严格测试可直接运行成功且功能...
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...
- 包括Servlet、JSP、EJB、JDBC等。 #### 3. Application Server的功能与优点 - 功能:容器服务、事务管理、安全管理等。 - 优点:简化开发、提高性能和可伸缩性。 #### 4. 连接池原理与优点 - **原理**:预先...
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...