1 what
SUN公司提供的一组API,由类和接口组成,用于操作不同的数据库
2 when
Java操作数据库时需要在Java和数据库之间建立连接,JDBC是桥梁
3 why
Java使用JDBC来操作数据库
4 how
4.1.加载驱动(Load the driver)
什么是驱动
各个数据库厂商针对SUN公司的接口提供的实现类,并将这些类打包成jar文件放在网上共Java程序员下载使用
为什么要导入驱动
SUN公司的jdk里面并未提供数据库的驱动包,而是由世界的各大数据库厂商提供,并且每个厂商提供的驱动包都不一样,所以要加载驱动包,必须将驱动包导入到classpath目录下
为什么要加载驱动
要使用驱动包里面的类,就必须先产生类的ClassLoader,加载驱动实际上就是加载ClassLoader,Java程序运行时首先会在内存中加载各种需要的类,首先加载rt.jar等jre核心包,然后加载静态类的ClassLoader,最后加载扩展包的jar文件,而数据库的驱动包就属于扩展包
为什么要通过反射加载驱动
加载驱动之后要产生对象,而产生对象有4种方式,不可能是反序列化,克隆,只可能是new和反射2种。假如用new的话,如果是sqlServer的数据库的话,Driver driver = new net.sourceforge.jtds.jdbc.Driver(); 但是换成其他数据库的话,各大厂商所用的包名,类名不一样,还要修改源代码,将new后面的代码修改,这不符合Java编程的复用思想,于是想到使用反射来产生对象,但是反射产生对象有3种,首先,不知道类名,所以不能用类名.class产生对象,其次,不可能是对象名.
getClass(),本来即要产生对象,那么不需要用这个方法来产生class对象再来产生对象,剩下只有Class.Forname("")方法了,其中传参是字符串,可以通过修改外部文件来更换不同的数据库,从而达到复用的目的
1) Class.forName()|Class.forName().newInstance()|new DriverName()
2) 实例化时自动向DriverManager注册,不需要显示调用DriverManager.registerDriver方法
4.2.获得连接(connetc to the database)
Connection conn = DriverManager.getConnection(url, username, password);
url 连接数据库的地址 范例:jdbc:oracle:thin@202.194.158.12:1521:ORCL"
jdbc:oracle:thin:通讯协议
202.194.158.12:1521: 数据库服务器的地址,1521表示Oracle的端口号
ORCL:数据库名
user 数据库用户名
password 数据库密码
4.3.使用连接对象创建声明语句对象执行增/删/改/查数据(CreateStatement&execute SQL)
1)Statement stmt = conn.createStatement();
2)Statement.executeQuery()
3)Statement.executeUpdate()
查询:ResultSet rs = stmt.executeQuery(sql);
预处理
PreparedStatement 不需要拼装sql语句 预编译,效率高 防止sql注入
附:
boolean execute() throws SQLException
在PreparedStatement 对象中执行SQL 语句,该语句可以是任何种类的SQL 语句。一些特别处理过的语句返回多个结果,execute 方法处理这些复杂的语句,executeQuery 和executeUpdate处理形式更简单的语句。
execute 方法返回一个boolean 值,以指示第一个结果的形式。必须调用getResultSet或getUpdateCount 方法来检索结果,并且必须调用getMoreResults 移动到任何后面的结果。
返回:
如果第一个结果是ResultSet 对象,则返回true;如果第一个结果是更新计数或者没有结果,则返回false
抛出:
SQLException - 如果发生数据库访问错误或者为此方法提供一个参数
------------------------------------------------------------------------------------------------------------------------------------------------------
ResultSet executeQuery() throws SQLException
在PreparedStatement 对象中执行SQL 查询,并返回该查询生成的ResultSet 对象。
返回:
包含该查询生成的数据的ResultSet 对象;从不返回null
抛出:
SQLException - 如果发生数据库访问错误或者SQL 语句没有返回一个ResultSet 对象
--------------------------------------------------------------------------------------------------------------------------------
int executeUpdate() throws SQLException
在此 PreparedStatement 对象中执行SQL 语句,该语句必须是一个SQL INSERT、UPDATE或DELETE 语句;或者是一个什么都不返回的SQL 语句,比如DDL语句。
返回:
(1) 对于INSERT、UPDATE或DELETE语句,返回行数
(2) 或者对于什么都不返回的SQL 语句,返回0
抛出:
SQLException - 如果发生数据库访问错误或者SQL 语句返回一个 ResultSet 对象
Statement 批处理
JDBC处理存储过程
JDBC事务处理,
--rowback回滚
AutoCommit默认是true一条transaction起始于一条DML语句,终止于commit或者DDL语句,DCL语句(授权语句),用户正常断开连接,非正常断开自动回滚
--commit提交transaction
4.4 循环取得结果(retrieve the result data)
可以滚动的结果集
可更新的结果集
(Oracle数据库中,oracle 9i不支持可更新的结果集,并且在后续版本中用select * 会导致该ResultSet强制readonly,需要明确指明字段名称才可更新)
4.5 展示结果(show data)
将数据库中的各种类型转化为Java中的类型(getXXX)方法
4.6 关闭操作对象
rs.close();
st.close();
conn. close();
完整示例代码:
完整源码下载地址:http://download.csdn.net/detail/shijinupc/4211987
5 分类
5.1 对于Java开发人员
提供了一套统一的接口和方法来操作不同的数据库,从而让Java开发人员不需要关心到底使用那一种数据库,而是关心如何利用数据库实现业务操作,并且 在以后当更换数据库时,不需要更改代码
5.2 对于数据库厂商
厂商实现SUN提供的统一的API,从而达到一个统一Java操作数据库的标准的目的
分享到:
相关推荐
JDBC相关的jar包,包括commons-dbcp-1.4-bin,commons-dbutils-1.6-bin,commons-pool-1.5.6-bin,mysql-connector-java-5.1.7-bin
标题 "jdbc相关jar包.zip" 描述中包含的是一系列用于Java数据库连接(JDBC)的库,包括几个特定的数据源管理工具。这些库对于任何Java开发者来说都是至关重要的,尤其是那些需要处理数据库操作的开发者。现在,我们...
这个"neo4j-jdbc相关jar"压缩包包含了必要的库文件,确保了在Java环境中与Neo4j数据库无缝对接。 首先,我们需要理解JDBC的角色。JDBC是Java平台上的一个标准接口,它允许Java应用程序与各种类型的数据库进行通信。...
标题 "跟jdbc相关的一些类库" 提供的信息表明,这些文件是与Java数据库连接(JDBC)相关的类库。JDBC是Java平台上的一个标准API,用于与各种类型的数据库进行通信。下面将详细讨论这些类库及其在Java数据库编程中的...
### JDBC相关Jar包详解 在Java开发中,JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,它可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了高度的抽象层...
### JDBC相关知识点详解 #### 一、JDBC简介 JDBC(Java Database Connectivity)是Java中用来对关系型数据库进行统一访问的标准API,它提供了一组接口与规范,允许Java程序连接多种数据库,并执行SQL语句,从而...
本归档文件"Jdbc相关知识点归档.pdf"将深入探讨JDBC的核心概念和应用。 1. JDBC驱动类型: - Type 1:纯Java API,通过ODBC桥连接数据库,性能较低。 - Type 2:部分Java,部分本地代码,如NetJDBC,适用于Oracle...
在这个名为“jdbc相关程序代码”的资源中,我们可以找到一系列用于演示JDBC操作的代码样本。这些示例通常会涵盖数据库连接、查询、更新、事务管理等核心功能。 首先,`DataSource`是Java JDBC API中的一个接口,它...
Java基础之JDBC相关代码是Java编程中一个重要的部分,主要涉及如何与关系型数据库进行交互。在Java中,JDBC(Java Database Connectivity)是一套规范,它为开发者提供了标准的API,使得Java应用程序能够连接到各种...
**JDBC概述** Java Database Connectivity (JDBC) 是Java编程语言中用于标准地访问数据库的API,由Sun Microsystems(现已被Oracle收购)开发并维护。它允许Java开发者通过编写Java代码来连接到各种类型的数据库,...
jdbc相关jar包---c3p0-0.9.5.2.jar----commons-logging-1.2.jar----druid-1.0.9.jar----mysql-----connector-java-8.0.17.jar----spring-beans-5.0.0.RELEASE.jar----spring-core-5.0.0.RELEASE.jar ----spring-...
标题中的“国产达梦数据库对应java-jdbc相关jar包”表明了这个压缩包包含的是用于连接达梦数据库的Java JDBC驱动程序。Java JDBC(Java Database Connectivity)是Java平台上的一个标准API,允许Java应用程序与各种...
Spring JDBC是Spring框架的一个核心模块,它为Java数据库连接(JDBC)提供了一种抽象层,使得开发者可以更轻松地处理数据库操作。Spring JDBC模块的主要目标是减少对JDBC API的直接依赖,通过提供一种更加高级、易于...
Spring JDBC模块是Spring框架的一部分,它提供了对JDBC(Java Database Connectivity)的高级抽象,简化了数据库操作。在这个场景中,我们关注的是Spring JDBC的5.1.3版本。 **Spring JDBC 5.1.3 版本详解** ...
1. 导入JDBC相关的Java库: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; ``` 2. 加载JDBC驱动: ```java Class.forName(...
JDBC相关资料,简单易懂,绝对有用!(培训的相关资料)
"spring-jdbc jar包"包含了Spring框架中与JDBC相关的所有类和接口,为开发者提供了强大的数据访问支持。 首先,我们来看看Spring JDBC的核心组件: 1. **JdbcTemplate**:这是Spring JDBC的核心类,它通过模板方法...
在标签“sqljdbc_3.0 jdbc”中,“sqljdbc”是指SQL Server JDBC驱动,而“jdbc”再次强调这是与JDBC相关的技术。SQL Server JDBC驱动支持JDBC 4.0规范,这意味着它提供了诸如自动注册驱动、批量处理、行集迭代器等...
3. 引入JDBC相关的Java库,例如`import java.sql.Connection;`,`import java.sql.DriverManager;`等。 接下来,使用JDBC驱动与Kingbase建立连接需要编写如下代码: ```java // 注册JDBC驱动 Class.forName(...