JDBC常用类和方法
Spring JdbcTemplate主要使用方法及其举例
Spring JdbcTemplate的主要使用方法及其举例Spring JdbcTemplate使用JdbcTemplate主要提供以下五类方法:execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;query方法及queryForXXX方法:用于执行查询相关语句;call方法:用于执行存储过程、函数相关语句。
JdbcTemplate类支持的回调类:预编译语句及存储过程创建回调:用于根据JdbcTemplate提供的连接创建相应的语句;PreparedStatementCreator:通过回调获取JdbcTemplate提供的Connection,由用户使用该Conncetion创建相关的PreparedStatement;CallableStatementCreator:通过回调获取JdbcTemplate提供的Connection,由用户使用该Conncetion创建相关的CallableStatement;预编译语句设值回调:用于给预编译语句相应参数设值;PreparedStatementSetter:通过回调获取JdbcTemplate提供的PreparedStatement,由用户来对相应的预编译语句相应参数设值;BatchPreparedStatementSetter:;类似于PreparedStatementSetter,但用于批处理,需要指定批处理大小;自定义功能回调:提供给用户一个扩展点,用户可以在指定类型的扩展点执行任何数量需要的操作;ConnectionCallback:通过回调获取JdbcTemplate提供的Connection,用户可在该Connection执行任何数量的操作;StatementCallback:通过回调获取JdbcTemplate提供的Statement,用户可以在该Statement执行任何数量的操作;PreparedStatementCallback:通过回调获取JdbcTemplate提供的PreparedStatement,用户可以在该PreparedStatement执行任何数量的操作;CallableStatementCallback:通过回调获取JdbcTemplate提供的CallableStatement,用户可以在该CallableStatement执行任何数量的操作;结果集处理回调:通过回调处理ResultSet或将ResultSet转换为需要的形式;RowMapper:用于将结果集每行数据转换为需要的类型,用户需实现方法mapRow(ResultSetrs, introwNum)来完成将每行数据转换为相应的类型。
JSP JDBC常用类与接口
JSP JDBC常用类与接口在JDBC中包括了两个包:java.sql和javax.sql。
其中,java.sql包为基本功能,javax.sql包为扩展功能。
在这两个包中,还包含有许多的接口和类,以方便用户开发与数据库连接的程序。
1.JDBC中包的功能在java.sql包的类和接口主要针对基本的数据库编程服务,如生成连接、执行语句以及准备语句和运行批处理查询等。
同时也有一些高级的处理,比如批处理更新、事务隔离和滚动结果集等。
在javax.sql包中主要为数据库方面的高级操作提供了接口和类。
如为连接管理、分布式事务和旧有的连接提供了更好的抽象,它引入了容器管理的连接池、分布式事务和行集(RowSet)等。
java.sql包中常见的接口如表10-1所示:表10-1 JDBC API常用接口JDBC接口分为两个层次:一层是面向程序员的JDBC API;另外一层是JDBC Driver API,面向驱动厂家的。
每一个驱动程序层都必须实现4个主要的接口,应用程序层和驱动程序层用一个类桥连接。
这4个接口分别是Driver、Connection、S tatement和ResultSet。
Java接口提供了用一般名称表示具体对象的方法。
对于程序开发人员,了解具体Driver类实现并不重要,只要编码符合JDBC API标准就足够了。
JDBC API被描述成一组抽象的Java接口,应用程序可以对某个数据库建立连接。
如图10-7即为应用程序与JDBC API接口之间的关系。
Oracle 数据库支持ODBC 驱动程序的数据库MySQL 数据库图10-7 JDBC API 接口与数据库之间的关系2.Connection 接口Connection 接口与特定数据库的连接(会话),连接过程包括所执行的SQL 语句和在该连接上所返回的结果。
Connection 对象的数据库能够提供描述其表、所支持的SQL 语法、存储过程、此连接功能等等的信息。
Java中的JDBC数据库操作技巧
Java中的JDBC数据库操作技巧一、JDBC简介JDBC全称为Java Database Connectivity,是Java的一个标准API,用于与各种关系型数据库进行连接、查询、更新等操作。
JDBC提供了一套基于SQL的编程接口,能够让Java程序无需了解底层数据库的细节即可进行数据库操作。
二、JDBC驱动类型JDBC驱动是一个程序模块,用于实现JDBC的API并与具体的数据库进行通信。
JDBC驱动可以分为四种类型:1、JDBC-ODBC桥接式驱动:使用ODBC驱动访问数据库。
这种驱动依赖于底层操作系统的ODBC机制,因此只能在Windows系统中使用。
2、本地式驱动:这种驱动实现了JDBC的API,并且直接与数据库交互。
由于直接调用数据库的API,因此效率要比桥接式驱动高。
3、网络式驱动:这种驱动通过网络协议与数据库进行通信。
大多数商用数据库都支持这种驱动,因此可以跨平台使用。
4、纯Java式驱动:这种驱动完全由Java实现,并且直接与数据库进行通信。
由于没有依赖于底层操作系统的机制,因此可以跨平台使用。
三、JDBC连接数据库JDBC连接数据库通常分为以下步骤:1、加载JDBC驱动在使用JDBC之前,必须先加载相应的JDBC驱动类。
可以通过Class.forName()方法来加载驱动,该方法的参数是完整的类名。
2、连接数据库连接数据库需要的参数通常包括数据库的URL、用户名和密码等。
可以使用DriverManager.getConnection()方法来建立连接,该方法的参数是一个包含数据库连接信息的字符串。
3、关闭连接在使用完连接后,必须调用Connection.close()方法来关闭连接,以便释放资源。
四、JDBC执行SQL语句JDBC可以执行各种类型的SQL语句,包括查询语句、更新语句、存储过程等。
1、执行查询语句可以使用Statement或PreparedStatement对象来执行查询语句。
详解JDBC驱动的四种类型
Java中的JDBC驱动可以分为四种类型,包括JDBC-ODBC桥、本地API驱动、网络协议驱动和本地协议驱动。
JDBC驱动类型一、JDBC-ODBC桥JDBC-ODBC 桥是sun公司提供的,是jdk提供的的标准API. 这种类型的驱动实际是把所有 JDBC的调用传递给ODBC ,再由ODBC调用本地数据库驱动代码.( 本地数据库驱动代码是指由数据库厂商提供的数据库操作二进制代码库,例如在oracle for windows中就是oci dll 文件)只要本地机装有相关的ODBC驱动那么采用JDBC-ODBC桥几乎可以访问所有的数据库,JDBC- ODBC方法对于客户端已经具备ODBC driver的应用还是可行的.但是,由于JDBC-ODBC先调用 ODBC再由ODBC去调用本地数据库接口访问数据库.所以,执行效率比较低,对于那些大数据量存取的应用是不适合的.而且,这种方法要求客户端必须安装ODBC 驱动,所以对于基于 internet ,intranet的应用也是不合适的.因为,你不可能要求所有客户都能找到ODBC driver.JDBC驱动类型二、本地API驱动本地API驱动直接把JDBC调用转变为数据库的标准调用再去访问数据库.这种方法需要本地数据库驱动代码. 本地API驱动 | 厂商DB代码---------------数据库Server (图二) 这种驱动比起JDBC-ODBC桥执行效率大大提高了.但是,它仍然需要在客户端加载数据库厂商提供的代码库.这样就不适合基于internet的应用.并且,他的执行效率比起3,4型的JDBC驱动还是不够高.JDBC驱动类型三、网络协议驱动这种驱动实际上是根据我们熟悉的三层结构建立的. JDBC先把对数局库的访问请求传递给网络上的中间件服务器. 中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用传给数据库服务器.如果中间件服务器也是用java开法的,那么在在中间层也可以使用1,2型 JDBC驱动程序作为访问数据库的方法. 网络协议驱动---------中间件服务器------------数据库Server由于这种驱动是基于server的.所以,它不需要在客户端加载数据库厂商提供的代码库.而且他在执行效率和可升级性方面是比较好的.因为大部分功能实现都在server端,所以这种驱动可以设计的很小,可以非常快速的加载到内存中. 但是,这种驱动在中间件层仍然需要有配置其它数据库驱动程序,并且由于多了一个中间层传递数据,它的执行效率还不是最好.JDBC驱动类型四、本地协议驱动这种驱动直接把JDBC调用转换为符合相关数据库系统规范的请求.由于4型驱动写的应用可以直接和数据库服务器通讯.这种类型的驱动完全由java实现,因此实现了平台独立性. 本地协议驱动---------数据库Server由于这种驱动不需要先把JDBC的调用传给ODBC或本地数据库接口或者是中间层服务器.所以它的执行效率是非常高的.而且,它根本不需要在客户端或服务器端装载任何的软件或驱动. 这种驱动程序可以动态的被下载.但是对于不同的数据库需要下载不同的驱动程序.以上对四种类型的JDBC驱动做了一个说明.那么它们适合那种类型的应用开发呢?JDBC-ODBC桥由于它的执行效率不高,更适合做为开发应用时的一种过度方案,或着对于初学者了解JDBC编程也较适用. 对于那些需要大数据量操作的应用程序则应该考虑2,3,4型驱动.在intranet方面的应用可以考虑2型驱动,但是由于3,4型驱动在执行效率上比2型驱动有着明显的优势,而且目前开发的趋势是使用纯java.所以3,4型驱动也可以作为考虑对象. 至于基于internet方面的应用就只有考虑3,4型驱动了. 因为3型驱动可以把多种数据库驱动都配置在中间层服务器.所以3型驱动最适合那种需要同时连接多个不同种类的数据库, 并且对并发连接要求高的应用. 4型驱动则适合那些连接单一数据库的工作组应用。
JAVA使用JDBC连接数据库的几种方式
JAVA使用JDBC连接数据库的几种方式JDBC(Java Database Connectivity)是Java编程语言用于连接数据库的一种标准API。
它提供了一种访问和操作不同类型数据库的方法。
在JDBC中,有几种不同的方式可以连接数据库。
下面是常见的几种方式以及它们的详细介绍。
1.使用JDBC驱动程序连接数据库2. DriverManager类连接数据库DriverManager是一个Java类,用于管理JDBC驱动程序。
它提供了一种简单的方法来注册和获取特定驱动程序的连接。
使用DriverManager 连接数据库时,首先需要加载驱动程序,并使用驱动程序的URL、用户名和密码创建连接。
然后可以使用这个连接执行SQL查询和更新操作。
3. DataSource接口连接数据库DataSource是一个接口,用于从数据库连接池获取连接。
连接池是一组预先创建的数据库连接,可以重复使用,从而提高应用程序的性能。
通过使用DataSource接口,可以通过配置连接池的方式来连接和管理数据库连接。
这种方式通常适用于大型应用程序或需要高并发连接的场景。
4. 使用JNDI(Java Naming and Directory Interface)连接数据库JNDI是Java提供的一种用于在Java应用程序中查找和访问命名服务的API。
通过使用JNDI,可以在应用程序中配置数据库连接信息,并使用统一的方式访问数据库。
这种方式通常适用于企业级应用程序,其中数据库连接信息可以统一管理。
5.使用第三方库连接数据库除了使用JDBC标准API连接数据库,还可以使用一些第三方库来简化数据库访问。
例如,Hibernate是一个流行的Java持久化框架,它提供了一种简单的方式来与数据库进行交互。
使用Hibernate,可以通过简单的配置来连接和管理数据库。
总结:上述是几种使用JDBC连接数据库的方式。
每种方式都有自己的优势和适用场景。
jdbctype 类型
JDBC类型及常见用途概述
JDBC(Java Database Connectivity)类型主要定义了用于执行SQL语句的Java数据类型。
以下是JDBC类型及其描述:
1.NUMERIC, DECIMAL: 用于存储精确的小数值。
2.INTEGER: 用于存储整数值。
3.SMALLINT, TINYINT: 用于存储较小的整数值。
4.FLOAT, REAL: 用于存储浮点数。
5.CHAR, VARCHAR, TEXT, LONGVARCHAR: 用于存储字符数据。
其中,
VARCHAR和TEXT用于存储可变长度的字符串,而CHAR和LONGVARCHAR用于存储固定长度的字符串。
6.NCHAR, NVARCHAR, NTEXT: 用于存储Unicode字符数据。
7.BIT, BOOLEAN: 用于存储布尔值。
8.DATE: 用于存储日期值。
9.TIME: 用于存储时间值。
10.TIMESTAMP: 用于存储日期和时间值。
11.BINARY, VARBINARY, BLOB: 用于存储二进制数据。
12.CLOB: 用于存储大型文本对象。
13.ARRAY: 用于存储数组。
14.NULL: 用于表示没有值的列。
15.OTHER: 用于存储JDBC驱动程序无法识别或与标准SQL类型不兼容的其他
数据类型。
需要注意的是,并非所有的数据库都支持所有的JDBC类型,有些数据库可能会添加或更改这些类型的某些特性。
第9章 JDBC
11
• JDBC驱动管理器可以以两种方 式和最终的数据库进行通信:
–一 是 使 用 JDBC/ODBC 桥 接 驱 动 程序的间接方式;
–另 一 是 使 用 JDBC 驱 动 器 的 直 接 方式。
结果
ResultSet
Driver
SQL
结果
Database
27
import java.sql.*; Jdbc.java
public class SqlServerTest {
public static void main(String args[]) {
String url = "jdbc:microsoft:sqlserver://localhost:1433;Datab aseName=Company";
JDBC
客户机
数据库
JDBC
客户机
• Java应用程序直接与数据库进行对 话,通过JDBC与所访问的数据库 进行通信;
• 用户的SQL语句被送往数据库中, 执行操作返回其结果给用户。
9.2 JDBC的结构及实现
• 图9-2 JDBC的体系结构
Java应用程序 JDBC API JDBC驱动管理器 JDBC驱动器API
– DatabaseMetadata和 ResultSetMetaData接口分别表示关 于数据库,查询结果集的元数据信 息。
–元数据可以提供数据库结构和表的 详细信息。
(8)DatabaseMetaData接口主要包括以 下方法: –getTables()方法,返回数据库中符合 参数给定条件的所有表
第13章 JDBC
建立连接
与数据库建立连接的标准方法是调用方法:
DriverManger.getConnection(String url) DriverManger.getConnection(String url, String user, String password)
JDBC中URL字符串的准确形式随着数据库的不同而有 所变化,其一般形式是: jdbc:<subprotocol>:<subname> 如:
这里的数据库是指Java程序需要的数据库以及数据库管理系统。
驱动程序
数据库
1.JDBC API
JDBC API是一系列抽象的接口,它能够应用程 序进行数据库连接,执行SQL语句,并且得到返 回结果。常用接口如下:
(1)java.sql.DriverManager:用于处理驱动程序的调入 (2)java.sql.Connection:用于与特定数据库建立连接 (3)java.sql.Statement:用于SQL语句的执行 (4)java.sql.ResultSet:用于保存查询所得的结果
使用JDBC-ODBC Bridge,用于存取标准的 ODBC数据源,一般用来存取Microsoft Access、 Java应用程序 VFP数据库等。JDBC调用最终转化为ODBC调用, 适合于开发小规模的应用程序,因为JDBCODBC桥街驱动程序中的任何错误都可能造成服 务器死机。 JDBC-ODBC Bridge 这种方式也存在局限性。
ODBC D:Native API Bridge: 原生API结合Java驱动程序
Native API Bridge驱动 程序利用客户机上的本地 代码库来与数据库进行直 接通信。与JDBC-ODBC Bridge一样,这种驱动程 序也存在着许多限制。由 于它使用的是本地库,因 此这些库就必须事先安装 在客户机上。
jdbctype数字类型
jdbctype数字类型摘要:1.概述JDBC 数字类型2.JDBC 数字类型的分类3.JDBC 数字类型的使用示例4.JDBC 数字类型的优缺点正文:【概述JDBC 数字类型】JDBC(Java Database Connectivity)是一种用于执行SQL 语句的Java API,它提供了一种连接和操作数据库的标准方法。
在JDBC 中,数字类型是用于表示数值数据的数据类型,这些数据类型可以用于定义表结构、插入数据、查询数据等。
【JDBC 数字类型的分类】JDBC 数字类型主要分为以下几类:1.TINYINT:用于表示非常小的整数值,范围为-128 到127。
2.SMALLINT:用于表示较小的整数值,范围为-32,768 到32,767。
3.INTEGER:用于表示一般的整数值,范围为-2,147,483,648 到2,147,483,647。
4.BIGINT:用于表示较大的整数值,范围为-9,223,372,036,854,775,808 到9,223,372,036,854,775,807。
5.DECIMAL:用于表示精确的数值,包括整数部分和小数部分。
6.NUMERIC:用于表示数值,包括整数部分和小数部分,但不包括小数点。
7.REAL:用于表示单精度浮点数,范围为4.9E-324 到1.401E-45。
8.DOUBLE:用于表示双精度浮点数,范围为4.408E-384 到1.797E+308。
【JDBC 数字类型的使用示例】以下是一个使用JDBC 数字类型的简单示例:```javaimport java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class JdbcNumberExample {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/test";String user = "root";String password = "password";try (Connection conn = DriverManager.getConnection(url, user, password)) {String sql = "INSERT INTO num_test (id, num) VALUES (?,?)";PreparedStatement pstmt =conn.prepareStatement(sql);pstmt.setInt(1, 1);pstmt.setDouble(2, 123.45);pstmt.executeUpdate();sql = "SELECT * FROM num_test";ResultSet rs =conn.createStatement().executeQuery(sql);while (rs.next()) {int id = rs.getInt("id");double num = rs.getDouble("num");System.out.println("ID: " + id + ", NUM: " + num);}} catch (SQLException e) {e.printStackTrace();}}}```【JDBC 数字类型的优缺点】优点:1.统一了不同数据库的数字类型表示,简化了开发工作。
jdbc说明与用途
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。
有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。
换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用,将Java语言和JDBC结合起来使程序员只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。
JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。
作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。
JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC 之间的桥接。
JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。
JDBCTM 是一种用于执行SQL 语句的JavaTM API,它由一组用Java 编程语言编写的类和接口组成。
JDBC 为工具/数据库开发人员提供了一个标准的API,使他们能够用纯Java API 来编写数据库应用程序。
有了JDBC,向各种关系数据库发送SQL 语句就是一件很容易的事。
换言之,有了JDBC API,就不必为访问Sybase 数据库专门写一个程序,为访问Oracle 数据库又专门写一个程序,为访问Informix 数据库又写另一个程序,等等。
JDBC常用类接口详解(MySQL为例)
JDBC常⽤类接⼝详解(MySQL为例)DriverManager类java.sql.DriverManager 是⽤于管理⼀组JDBC驱动程序的基本服务。
注意: JDBC 2.0 API中新增的DataSource接⼝提供了另⼀种连接到数据源的⽅法。
使⽤DataSource对象是连接到数据源的⾸选⽅法。
DriverManager类功能注册驱动告诉程序该使⽤什么数据库驱动jar可以直接使⽤DriverManager类的静态⽅法注册驱动:static void registerDriver(Driver driver)// 注册与给定的驱动程序 DriverManager 。
也可以间接使⽤该⽅法,如下介绍直接和间接调⽤DriverManager类的静态⽅法注册驱动。
如我们要连接操作的是MySQL,那么我们就要注册驱动,告诉程序要使⽤MySQL驱动架包。
如下就是注册MySQL数据库驱动:注册驱动第⼀种⽅法:Class<?> aClass = Class.forName("com.mysql.jdbc.Driver");// 将字节码⽂件Driver.java加载进内存,返回Driver.class对象。
注册驱动第⼆种⽅法:com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();DriverManager.registerDriver(driver);com.mysql.jdbc.Driver类中存在静态代码块,如下:static {try {DriverManager.registerDriver(new Driver());} catch (SQLException var1) {throw new RuntimeException("Can't register driver!");}}这⾥可以看出来,两种驱动⽅法其实都是⼀样的,都要⽤到静态⽅法registerDriver()备注:MySQL 5 之后的驱动jar包可以省略注册驱动的步骤。
jdbc元数据getmetadata常用方法
jdbc元数据getmetadata常用方法JDBC元数据getMetadata常用方法:在Java开发中,JDBC(Java Database Connectivity)是一种用于与数据库建立连接和执行数据库操作的API。
其中,元数据(Metadata)是指描述数据库结构的数据,可以通过JDBC的getMetadata方法来获取。
以下是jdbc元数据getMetadata常用的几种方法:1. getTables方法:该方法用于获取数据库中的所有表的信息。
可以通过指定目录名称、模式名称和表名称的模式来过滤想要获取的表的信息。
返回的ResultSet中包含表的名称、类型等详细信息。
2. getColumns方法:该方法用于获取指定表的所有列的信息。
可以通过指定目录名称、模式名称、表名称和列名称的模式来过滤想要获取的列的信息。
返回的ResultSet中包含列的名称、数据类型、长度等详细信息。
3. getPrimaryKeys方法:该方法用于获取指定表的主键的信息。
可以通过指定目录名称、模式名称和表名称的模式来获取主键的信息。
返回的ResultSet中包含主键列的名称和序列号等详细信息。
4. getImportedKeys方法:该方法用于获取指定表的外键(引用其他表的主键)的信息。
可以通过指定目录名称、模式名称和表名称的模式来过滤想要获取的外键的信息。
返回的ResultSet中包含外键列的名称、参考表名称等详细信息。
5. getTypeInfo方法:该方法用于获取数据库支持的所有数据类型的信息。
返回的ResultSet中包含数据类型的名称、对应的Java类型等详细信息。
以上是jdbc元数据getMetadata常用的几种方法,通过这些方法可以方便地获取数据库中的表、列、主键、外键和数据类型的信息,为程序中对数据库的操作提供了便利。
在实际开发中,根据具体需求选择合适的方法来获取所需的元数据信息。
jdbctemplate query用法
文章标题:深度剖析JdbcTemplate query用法及个人观点在使用Spring框架进行数据库操作时,JdbcTemplate是一个非常常用的工具类。
其中的query方法更是被广泛使用,因此我们有必要对其用法进行深入的了解和分析。
1. JdbcTemplate query方法简介JdbcTemplate是Spring框架中的核心类之一,它封装了对数据库的常用操作,简化了JDBC编程的复杂性。
其中的query方法用于执行查询操作,并返回查询结果集。
它的用法非常灵活,可以适用于各种复杂的查询场景。
2. JdbcTemplate query方法的基本用法及参数含义- query方法的基本用法如下:```javapublic <T> List<T> query(String sql, RowMapper<T> rowMapper) throws DataAccessException;public <T> List<T> query(String sql, Object[] args, RowMapper<T> rowMapper) throws DataAccessException;public <T> List<T> query(String sql, Object[] args, int[] argTypes, RowMapper<T> rowMapper) throws DataAccessException;```这些重载的query方法分别接受不同的参数组合,通过sql语句、参数数组和RowMapper对象来执行查询操作并返回结果集。
3. 深入理解RowMapper接口的作用- RowMapper接口的作用是将查询结果集中的每一行数据映射为相应的Java对象。
我们可以通过实现RowMapper接口来定义自己的数据映射规则,使得查询结果集中的数据能够直接转换为我们需要的对象类型。
Java基础案例教程 第10章 JDBC
✎
10.2 JDBC常用API
(2)DriverManager接口 DriverManager接口用于加载JDBC驱动、创建与数据库的连接。在 DriverManager接口中,定义了两个比较重要的静态方法
方法名称
功能描述
static void registerDriver(Driver driver)
功能描述
用于获取指定字段的String类型的值,参数columnIndex 代表字段的索引。
用 于 获 取 指 定 字 段 的 String 类 型 的 值 , 参 数 columnName代表字段的名称。
用于获取指定字段的int类型的值,参数columnIndex代 表字段的索引。 用于获取指定字段的int类型的值,参数columnName代 表字段的名称。
CallableStatement sql)
prepareCall(String 用于创建一个CallableStatement对象来调用数据 库存储过程
✎
10.2 JDBC常用API
(4)Statement接口 Statement接口用于执行静态的SQL语句, 并返回一个结果对象。Statement接口对象 可以通过Connection实例的 createStatement()方法获得,该对象会把静 态的SQL语句发送到数据库中编译执行,然 后返回数据库的处理结果。
✎
10.2 JDBC常用API
通过setter()方法为SQL语句中的参数赋值时,可以通过已定义的SQL类
型参数兼容输入参数。例如,如果参数具有的SQL类型为Integer,那么
应该使用setInt()方法或setObject()方法设置多种类型的输入参数,具体
jdbc基础知识总结
jdbc基础知识总结JDBC(Java Database Connectivity)是Java语言中用于连接和操作数据库的API。
它提供了一种标准的方式来访问各种关系型数据库,如MySQL、Oracle、SQL Server等。
在本文中,我们将总结JDBC 的基础知识。
1. JDBC驱动程序JDBC驱动程序是用于连接Java应用程序和数据库的软件组件。
它们提供了一种标准的接口,使Java应用程序能够与各种数据库进行通信。
JDBC驱动程序通常分为四种类型:JDBC-ODBC桥接驱动程序、本地API驱动程序、网络协议驱动程序和本地协议驱动程序。
2. JDBC APIJDBC API是Java语言中用于连接和操作数据库的标准API。
它包含了一组接口和类,用于执行SQL语句、处理结果集、管理事务等。
JDBC API的核心接口是Connection、Statement和ResultSet。
3. 连接数据库连接数据库是使用JDBC的第一步。
要连接数据库,需要使用DriverManager类的getConnection()方法。
该方法需要传递数据库的URL、用户名和密码作为参数。
例如,连接MySQL数据库的代码如下:```String url = "jdbc:mysql://localhost:3306/mydatabase";String user = "root";String password = "mypassword";Connection conn = DriverManager.getConnection(url, user, password);```4. 执行SQL语句执行SQL语句是使用JDBC的主要功能之一。
要执行SQL语句,需要创建一个Statement对象,并使用它的execute()方法。
例如,执行SELECT语句的代码如下:```Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT * FROM mytable");while (rs.next()) {// 处理结果集}```5. 处理结果集处理结果集是使用JDBC的另一个重要功能。
JdbcTemplate常用方法
JdbcTemplate常⽤⽅法JdbcTemplate简介 JdbcTemplate是Spring JDBC的核⼼类,借助该类提供的⽅法可以很⽅便的实现数据的增删改查。
Spring对数据库的操作在jdbc上⾯做了深层次的封装,使⽤spring的注⼊功能,可以把DataSource注册到JdbcTemplate之中。
JdbcTemplate位于中。
其全限定命名为org.springframework.jdbc.core.JdbcTemplate。
要使⽤JdbcTemlate还需⼀个这个包包含了事务和异常控制JdbcTemplate主要提供以下五类⽅法:execute⽅法:可以⽤于执⾏任何SQL语句,⼀般⽤于执⾏DDL语句;update⽅法及batchUpdate⽅法:update⽅法⽤于执⾏新增、修改、删除等语句;batchUpdate⽅法⽤于执⾏批处理相关语句;query⽅法及queryForXXX⽅法:⽤于执⾏查询相关语句;call⽅法:⽤于执⾏存储过程、函数相关语句。
xml中的配置:<!-- 扫描 --><context:component-scan base-package="com.zzj.*"></context:component-scan><!-- 不属于⾃⼰⼯程的对象⽤bean来配置 --><!-- 配置数据库连接池 --><bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close" p:username="root" p:password="qw13579wq"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/test"></property></bean><!-- 配置jdbcTemplate --><bean class="org.springframework.jdbc.core.JdbcTemplate" p:dataSource-ref="dataSource"></bean>常⽤⽅法:数据库user_info表:我们先创建⼀个实体对象,对应数据库表中的信息,⽅便之后的查询操作package com.zzj.vo;public class UserInfo {private int id;private String userName;private String password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {erName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "UserInfo [id=" + id + ", userName=" + userName + ", password=" + password + "]";}}修改(包含增、删、改):update()⽅法,另有批量插⼊⽅法batchUpdate()update()⽅法增删改:UserInfoDao.java代码:@Repositorypublic class UserInfoDao {@Autowired//从容器中⾃动扫描获取jdbcTemplateprivate JdbcTemplate jdbcTemplate;//update()实现增加数据public boolean insert(int id,String userName,String password){String sql = "insert into user_info values (?,?,?)";return jdbcTemplate.update(sql,id,userName,password)>0;}//update()实现修改public boolean update(int id,String userName,String password){String sql = "update user_info set user_name=?,password=? where id=?";return jdbcTemplate.update(sql,userName,password,id)>0;}//update()实现删除public boolean delete(int id){String sql = "delete from user_info where id=?";return jdbcTemplate.update(sql,id)>0;}}测试类代码:public class Test {public static void main(String[] args) {ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml"); UserInfoDao userDao = applicationContext.getBean(UserInfoDao.class);boolean insert = userDao.insert(1,"Jim", "123");boolean update = userDao.update(1,"Tom","123456");boolean delete = userDao.delete(1); System.out.println("插⼊:"+insert+",修改:"+update+",删除:"+delete);}}测试结果:查询:查询单个值、查询⼀个对象、查询多个对象查询单个值//查询单个值public boolean login(String userName,String password){try {String sql = "select id from user_info where user_name=? and password=?";jdbcTemplate.queryForObject(sql,String.class,userName,password);return true;} catch (DataAccessException e) {return false;}}查询⼀个对象:RowMapper⽅法和ResultSetExtractor⽅法//查询单个对象public UserInfo getById(int id){String sql = "select id,user_name,password from user_info where id=?";//RowMapper⽅法class UserInfoRowMapper implements RowMapper<UserInfo>{@Overridepublic UserInfo mapRow(ResultSet rs, int rowNum) throws SQLException {UserInfo userInfo = new UserInfo();userInfo.setId(rs.getInt("id"));userInfo.setUserName(rs.getString("user_name"));userInfo.setPassword(rs.getString("password"));return userInfo;}}return jdbcTemplate.queryForObject(sql,new UserInfoRowMapper(),id);//RowMapper⽅法的Lambda表达式return jdbcTemplate.queryForObject(sql,(ResultSet rs,int rowNum)->{UserInfo userInfo = new UserInfo();userInfo.setId(rs.getInt("id"));userInfo.setUserName(rs.getString("user_name"));userInfo.setPassword(rs.getString("password"));return userInfo;},id);//ResultSetExtractor⽅法class UserInfoResultSet implements ResultSetExtractor<UserInfo>{@Overridepublic UserInfo extractData(ResultSet rs) throws SQLException, DataAccessException { UserInfo userInfo = null;if(rs.next()){userInfo = new UserInfo();userInfo.setId(rs.getInt("id"));userInfo.setUserName(rs.getString("user_name"));userInfo.setPassword(rs.getString("password"));}return userInfo;}}return jdbcTemplate.query(sql,new UserInfoResultSet(),id);//ResultSetExtractor⽅法的lambda表达式return jdbcTemplate.query(sql,(ResultSet rs)->{UserInfo userInfo = null;if(rs.next()){userInfo = new UserInfo();userInfo.setId(rs.getInt("id"));userInfo.setUserName(rs.getString("user_name"));userInfo.setPassword(rs.getString("password"));}return userInfo;},id);}查询多个对象:RowMapper⽅法和ResultSetExtractor⽅法//查询多个对象public List<UserInfo> selectAll(){String sql = "select id,user_name,password from user_info";//RowMapper⽅法class UserInfoRowMapper implements RowMapper<UserInfo>{@Overridepublic UserInfo mapRow(ResultSet rs, int rowNum) throws SQLException {UserInfo userInfo = new UserInfo();userInfo.setId(rs.getInt("id"));userInfo.setUserName(rs.getString("user_name"));userInfo.setPassword(rs.getString("password"));return userInfo;}}return jdbcTemplate.query(sql,new UserInfoRowMapper());//RowMapper⽅法的Lambda表达式return jdbcTemplate.query(sql,(ResultSet rs,int rowNum)->{UserInfo userInfo = new UserInfo();userInfo.setId(rs.getInt("id"));userInfo.setUserName(rs.getString("user_name"));userInfo.setPassword(rs.getString("password"));return userInfo;});//ResultSetExtractor⽅法class UserInfoResultSet implements ResultSetExtractor<List<UserInfo>>{@Overridepublic List<UserInfo> extractData(ResultSet rs) throws SQLException, DataAccessException { List<UserInfo> list = new ArrayList<>();while(rs.next()){UserInfo userInfo = new UserInfo();userInfo.setId(rs.getInt("id"));userInfo.setUserName(rs.getString("user_name"));userInfo.setPassword(rs.getString("password"));list.add(userInfo);}return list;}}return jdbcTemplate.query(sql, new UserInfoResultSet());//ResultSetExtractor⽅法的lambda表达式return jdbcTemplate.query(sql,(ResultSet rs)->{List<UserInfo> list = new ArrayList<>();while(rs.next()){UserInfo userInfo = new UserInfo();userInfo.setId(rs.getInt("id"));userInfo.setUserName(rs.getString("user_name"));userInfo.setPassword(rs.getString("password"));list.add(userInfo);}return list;});}。
第四章 使用JDBC连接数据库
4.2.2 Connection类
Connection类代表对特定数据库的连接。 在一个Connection的作用范围内,可以执行SQL 语句并返回结果。 1. 打开连接
打开URL=" jdbc:mysql://localhost/coursesystem" 的数据库。连接该数据库的用户名为root,口令为 root。 String url = " jdbc:mysql://localhost/coursesystem"; Connection con = DriverManager.getConnection(url, "root", "root");
第四章 使用JDBC连接数据库
本章主要内容
四种类型的JDBC驱动程序。 JDBC API中几个主要的接口(类)。 通过JDBC访问数据库的7个步骤。 事务操作。
4.1 JDBC概述
4.1.1 JDBC简介 JDBC(Java Database Connectivity,Java数 据库连接)是一个面向对象的应用程序接口 (API),是执行SQL语句的Java API,由一组用 Java语言编写的类与接口组成。 JDBC的最大特点是独立于具体的关系数据库。
4.3.4 创建Statement对象
Statement对象是一个用于发送查询语句并得到结 果集的对象,没有该对象就不能进行数据库的操 作。 由Connection的createStatement()方法创建,一 般使用下面的代码片段: Statement stmt= conn.createStatement();
4) 常见可选参数:
• user: 数据库用户名。 • password: 数据库密码。 • autoReconnect: 数据库连接丢失时,是否自动连接;取值为 true/false,默认为false。 • maxReconnect: 当autoReconnect=true时,此参数为尝试重 新连接次数,默认为3次。 • initialTimeout: 当autoReconnect=true时,此参数为尝试 重新连接前等待的秒数,默认为2秒。 • maxRows: 查询时返回的行数;默认为0,表示全部。 • useUnicode: 是否使用Unicode字体编码;取值为true/false, 默认为false。 • characterEncoding: 当useUnicode=true时,此参数设置为采 用何种编码,取值为GB2312/UTF-8/GBK等。
使用JDBC连接数据库(一)
使⽤JDBC连接数据库(⼀)JDBC是由java编程语⾔编写的类及接⼝组成,同时它为程序开发⼈员提供了⼀组⽤于实现对数据库访问的JDBC API,并⽀持SQL语⾔。
利⽤JDBC可以将JAVA代码连接到oracle、DB2、SQLServer、MYSQL等数据库,从⽽实现对数据库中的数据操作的⽬的。
⼀、JDBC简介JDBC全称为:Java Data Base Connectivity (java数据库连接),可以为多种数据库提供填统⼀的访问。
JDBC是sun开发的⼀套数据库访问编程接⼝,是⼀种SQL级的API。
它是由java语⾔编写完成,所以具有很好的跨平台特性,使⽤JDBC编写的数据库应⽤程序可以在任何⽀持java的平台上运⾏,⽽不必在不同的平台上编写不同的应⽤程序。
JDBC的主要功能如下:(1)建⽴与数据库或者其他数据源的链接(2)向数据库发送SQL命令(3)处理数据库的返回结果⼆、JDBC中常⽤类和接⼝连接到数据库(Connection)、建⽴操作指令(Statement)、执⾏查询指令(executeQuery)、获得查询结果(ResultSet)等。
1、驱动程序管理类(DriverManager)DriverManager类是JDBC的管理类,作⽤于⽤户和驱动程序之间。
它跟踪在可⽤的驱动程序,并在数据库和相应驱动程序之间建⽴连接。
另外,DriverManager类也处理诸如驱动程序登陆时间限制及登录和跟踪消息的显⽰事务。
对于简单的应⽤程序,⼀般程序员需要在此类中直接使⽤唯⼀的⽅法时DriverManager.getConnection()。
该⽅法将建⽴与数据库的链接。
JDBC允许⽤户调⽤DriverManager的⽅法getDriver()、getDrivers()和registerDriver()及Driver的⽅法connect().2、声明类(Statement)Statement对象⽤于将SQL语句发送到数据库中。
jdbc数据库
1引言Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
JDBC也是Sun Microsystems的商标。
我们通常说的JDBC 是面向关系型数据库的。
2程序类型和API概述程序类型编辑JDBC驱动程序共分四种类型:类型1JDBC-ODBC桥这种类型的驱动把所有JDBC的调用传递给ODBC,再让后者调用数据库本地驱动代码(也就是数据库厂商提供的数据库操作二进制代码库,例如Oracle中的oci.dll)。
类型2本地API驱动这种类型的驱动通过客户端加载数据库厂商提供的本地代码库(C/C++等)来访问数据库,而在驱动程序中则包含了Java代码。
类型3网络协议驱动这种类型的驱动给客户端提供了一个网络API,客户端上的JDBC驱动程序使用套接字(Socket)来调用服务器上的中间件程序,后者在将其请求转化为所需的具体API调用。
类型4本地协议驱动这种类型的驱动使用Socket,直接在客户端和数据库间通信。
JDBC API主要位于JDK中的java.sql包中(之后扩展的内容位于javax.sql 包中),主要包括(斜体代表接口,需驱动程序提供者来具体实现):DriverManager:负责加载各种不同驱动程序(Driver),并根据不同的请求,向调用者返回相应的数据库连接(Connection)。
Driver:驱动程序,会将自身加载到DriverManager中去,并处理相应的请求并返回相应的数据库连接(Connection)。
Connection:数据库连接,负责与进行数据库间通讯,SQL执行以及事务处理都是在某个特定Connection环境中进行的。
可以产生用以执行SQL 的Statement。
Statement:用以执行SQL查询和更新(针对静态SQL语句和单次执行)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
H、void close() throws SQLException //结束Connection对象对数据库的联机
I、boolean isClosed() throws SQLException //测试是否已经关闭Connection类对象对数据库的联机
3、Statement类
通过Statement类所提供的方法,可以利用标准的SQL命令,对数据库直接新增、删除或修改操作
方法:
A、ResultSet executeQuery(String sql) throws SQLException //使用SELECT命令对数据库进行查询
B、int executeUpdate(String sql) throws SQLException
JDBC2.0中才支持滚动的结果集,而且可以对数据进行更新
B、DatabaseData getData() throws SQLException; //建立DatabaseData类对象
C、PreparedStatement prepareStatement(String sql) throws SQLException;
作为JDK1.1后的一部分,是sun.jdbc.odbc包的一部分 Application--->JDBC-ODBC Bridge---->JDBC-ODBC Library--->ODBC Driver-->Database 适用于快速的原型系统,没有提供JDBC驱动的数据库如Access
TYPE_SCROLL_INSENSITIVE 结果集可滚动,不反映数据库的变化
TYPE_SCROLL_SENSITIVE 结果集可滚动,反映数据库的变化
resultSetConcurrency值
CONCUR_READ_ONLY 不能用结果集更新数据
CONCUR_UPDATABLE 能用结果集更新数据
D、boolean first() throws SQLException //移动记录指针到第一笔记录
E、boolean last() throws SQLException //移动记录指针到最后一笔记录
F、boolean next() throws SQLException //移动记录指针到下一笔记录
二、常用的JDBC类与方法
1、DriverManager类:
负责管理JDBC驱动程序。使用JDBC驱动程序之前,必须先将驱动程序加载并向DriverManager注册后才可以使用,同时提供方法来建立与数据库的连接。
方法:
A、Class.forName(String driver); //加载注册驱动程序
B、String getDatabaseProductVersion() throws SQLException //取得数据库版本代号
C、String getDriverName() throws SQLException //取得JDBC驱动程序的名称
D、String getDriverVersion() throws SQLException //取得JDBC驱动程序的版本代号
//设定NULL类型数值给PreparedStatement类对象的IN参数
G、void setString(int parameterIndex,String x) throws SQLException
//设定字符串类型数值给PreparedStatement类对象的IN参数
2007-10-10
JDBC常用类和方法(转)
关键字: jdbc
JDBC常用类和方法
一、四种驱动程序概念
A、JDBC-ODBC Bridge
桥接器型的驱动程序,这类驱动程序的特色是必须在使用者端的计算机上事先安装好ODBC驱动程序,然后通过JDBC-ODBC的调用方法,进而通过ODBC来存取数据库。
E、String getURL() throws SQLException //取得连接数据库的JDBC URL
F、String getUserName() throws SQLException //取得登录数据库的使用者帐号
6、ResultSet类
负责存储查询数据库的结果。并提供一系列的方法对数据库进行新增、删除和修改操作。也负责维护一个记录指针(Cursor),记录指针指向数据表中的某个记录,通过适当的移动记录指针,可以随心所欲的存取数据库,加强程序的效率。
C、JDBC-middleware
这类型的驱动程序最大的好处就是省去了在使用者计算机上安装任何驱动程序的麻烦,只需在服务器端安装好middleware,而middleware会负责所有存取数据库必要的转换。Application--->Jdbc Driver----->java middleware--->JDBC Driver---->Database 具有最大的灵活性,通常由那些非数据库厂商提供,是四种类型中最小的。
D、Pure JDBC driver
这类型的驱动程序是最成熟的JDBC驱动程序,不但无需在使用者计算机上安装任何额外的驱动程序,也不需要在服务器端安装任何中介程序(middleware),所有存取数据库的操作,都直接由驱动程序来完成。
Application--->Jdbc driver----->database engine--->database 最高的性能,通过自己的本地协议直接与数据库引擎通信,具备在Internet装配的能力。
//在已经向DriverManager注册的驱动程序中寻找一个能够打开url所指定的数据库的驱动程序
2、Connection类
负责维护JSP/JAVA数据库程序和数据库之间的联机。可以建立三个非常有用的类对象。
方法:
A、Statement createStatement() throws SQLException; //建立Statement类对象
//设定Connection类对象的AutoCommit状态
F、void commit() throws SQLException //确定执行对数据库新增、删除或修改记录的操作
G、void rollback() throws SQLException //取消执行对数据库新增、删除或修改记录的操作
C、ResultSetData getData() throws SQLException
//取得ResultSet类对象有关字段的相关信息
D、void setInt(int parameterIndex,int x) throws SQLException
//设定整数类型数值给PreparedStatement类对象的IN参数
//设定时间类型数值给PreparedStatement类对象的IN参数
5、DatabaseData类
DatabaseData类保存了数据库的所有特性,并且提供许多方法来取得这些信息。
方法:
A、String getDatabaseProductName() throws SQLException //取得数据库名称
E、void setFloat(int parameterIndex,float x) throws SQLException
//设定浮点数类型数值给PreparedStatement类对象的IN参数
F、void setNull(int parameterIndex,int sqlType) throws SQLException
G、boolean previous() throws SQLException //移动记录指针到上一笔记录
H、void setDate(int parameterIndex,Date x) throws SQLException
//设定日期类型数值给PreparedStatement类对象的nt parameterIndex,Time x) throws SQLException
Statement createStatement(int resultSetType,int resultSetConcurrency) throws SQLException;
// 建立Statement类对象
resultSetType值
TYPE_FORWARD_ONLY 结果集不可滚动
B、JDBC-Native API Bridge
也是桥接器驱动程序之一,这类驱动程序也必须先在使用者计算机上先安装好特定的驱动程序(类似ODBC),然后通过JDBC-Native API桥接器的转换,把Java API调用转换成特定驱动程序的调用方法,进而存取数据库。
利用开发商提供的本地库来直接与数据库通信。 Application--->JDBC Driver---->Native Database library---->Database 比A类性能略好。
方法:
A、ResultSet executeQuery() throws SQLException //使用SELECT命令对数据库进行查询
B、int executeUpdate() throws SQLException
//使用INSERT\DELETE\UPDATE对数据库进行新增、删除和修改操作。
//使用INSERT\DELETE\UPDATE对数据库进行新增、删除和修改操作。
C、void close() throws SQLException //结束Statement类对象对数据库的联机
4、PreparedStatement类
PreparedStatement类和Statement类的不同之处在于PreparedStatement类对象会将传入的SQL命令事先编好等待使用,当有单一的SQL指令比多次执行时,用PreparedStatement类会比Statement类有效率