定义
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序。
有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。
Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。
JDBC 的用途
简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。下列代码段给出了以上三步的基本示例:
Connection con = DriverManager.getConnection("jdbc:odbc:wombat","login", "password");
Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) {
int x = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
}
JDBC API
JDBC 是个"低级"接口,也就是说,它用于直接调用 SQL 命令。在这方面它的功能极佳,并比其它的数据库连接 API 易于使用,但它同时也被设计为一种基础接口,在它之上可以建立高级接口和工具。高级接口是"对用户友好的"接口,它使用的是一种更易理解和更为方便的 API,这种API在幕后被转换为诸如 JDBC 这样的低级接口。
在关系数据库的"对象/关系"映射中,表中的每行对应于类的一个实例,而每列的值对应于该实例的一个属性。于是,程序员可直接对 Java 对象进行操作;存取数据所需的 SQL 调用将在"掩盖下"自动生成。此外还可提供更复杂的映射,例如将多个表中的行结合进一个 Java 类中。
JDBC 入门
装载驱动程序 装载驱动程序只需要非常简单的一行代码。例如,你想要使用 JDBC-ODBC 桥驱动程序, 可以用下列代码装载它:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //注册该类
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();//注册该类并实例化一个对象。
建立连接
第二步就是用适当的驱动程序类与 DBMS 建立一个连接。下列代码是一般的做法: Connection con = DriverManager.getConnection(url, "myLogin", "myPassword"); 这个步骤也非常简单,最难的是怎么提供 url。如果你正在使用 JDBC-ODBC 桥, JDBC URL 将以 jdbc:odbc 开始:余下 URL 通常是你的数据源名字或数据库系统。因此,假设你正在使用 ODBC 存取一个叫 "Fred" 的 ODBC 数据源,你的 JDBC URL 是 jdbc:odbc:Fred 。把 "myLogin" 及 "myPassword" 替换为你登陆 DBMS 的用户名及口令。如果你登陆数据库系统的用户名为 "Fernanda" 口令为 "J8",只需下面的 2 行代码就可以建立一个连接:
String url = "jdbc:odbc:Fred";
Connection con = DriverManager.getConnection(url,"Fernanda", "J8");
创建 JDBC Statements 对象
Statement stmt = con.createStatement();//直接处理
PreparedStatement pst=conn.prepareStatement("delete from VenueTime where Company_Id=? AND Time_Id=?");//预处理,防止注入攻击
pst.addBatch();//加上这与用于批处理
执行语句
stmt.executeUpdate(sql);//直接处理
pst.executeUpdate();//预处理
pst.executeBatch();//批处理
resultset rs=stmt.executequery(sql) //查询语句
jdbc编程的陷阱
1、conn一定要在finally语句块进行关闭。
2、statement、resultset尽可能缩小其变量作用域。
3、statement可以使用多次,定义多个。一个statement对象只和一个resultset对象关联,并且是最后一次查询。
4、resultset在connection、resultset关闭后自动关闭。
5.PreparedStatement防止注入式攻击
jdbc提供四种隔离级:
TRANSACTION_READ_UNCOMMITTED。
在提交前一个事务可以看到另一个事务的变化,脏读,不可重复读和虚度都可能发生。
TRANSACTION_READ_COMMITTED。
读取未提交的数据是不允许的,不可重复的读和虚读可能发生。
TRANSACTION_REPEATABLE_READ。
可以保证一个事务内读取的数据不会被改变,虚读仍然会出现。
TRANSACTION_SERIALIZABLE。
最高的事务级别,防止脏读、不可重复的读和虚读。
JDBC的不足
尽管JDBC在JAVA语言层面实现了统一,但不同数据库仍旧有许多差异。为了更好地实现跨数据库操作,于是诞生了Hibernate项目,Hibernate是对JDBC的再封装,实现了对数据库操作更宽泛的统一和更好的可移植性。
连接各种数据库
1、Oracle8/8i/9i数据库(thin模式)
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID
String user="test";
String password="test";
Connection conn= DriverManager.getConnection(url,user,password);
2、DB2数据库
Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample"; //sample为你的数据库名
String user="admin";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
3、Sql Server7.0/2000数据库
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
//mydb为数据库
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
4、MySQL数据库
Class.forName("org.gjt.mm.mysql.Driver").newInstance(); //或者Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//myDB为数据库名
Connection conn= DriverManager.getConnection(url);
分享到:
相关推荐
【JDBC概述】 Java Database Connectivity (JDBC) 是Java编程语言中用于访问关系数据库的API,它为开发者提供了一种标准化的方式来执行SQL语句并与多种数据库进行交互。JDBC是Java的一部分,允许开发者使用纯Java...
### JDBC概述讲解 #### 1. 引言 随着信息技术的发展,Java作为一种强大的编程语言,因其安全性、易用性和跨平台特性,在软件开发领域占据着举足轻重的地位。特别是对于数据库应用程序而言,Java提供了丰富的工具和...
Java-JDBC【之】JDBC概述、获取连接、SQL注入问题与解决、查询解析 1.JDBC概述 2.操作流程 1.初始化项目,导入`驱动jar包` 2.加载驱动类 3.创建数据库连接对象`Connection` 4.创建`Statement` (此处存在SQL注入问题)...
**JDBC概述** Java Database Connectivity (JDBC) 是Java编程语言中用于与各种数据库进行交互的一组标准API。它是Java平台的标准部分,由Java SE(Standard Edition)提供,允许Java开发者执行SQL语句并处理结果。...
【JDBC概述】 JDBC(Java Database Connectivity)是Java编程语言中用于规范客户端程序如何访问数据库的应用程序接口,它是Java程序与各种数据库系统交互的标准API。通过JDBC,开发者可以编写出与数据库无关的代码,...
**JDBC概述** Java Database Connectivity (JDBC) 是一种Java编程语言中用于访问数据库的标准应用程序接口(API)。它是Sun Microsystems(现为Oracle公司)制定的一组接口和规范,允许Java开发者与各种数据库系统...
Java__JDBC概述和连接.mp4
JDBC概述+快速入门+API详解+数据库连接池
Java中的JDBC(Java Database Connectivity)是Java编程语言与各种数据库之间进行通信的桥梁,它允许Java应用程序通过标准的API来执行SQL语句并处理数据库。JDBC是Sun Microsystems(现在是Oracle的一部分)制定的...
#### JDBC概述与原理 JDBC(Java DataBase Connectivity,Java数据库连接)是一项至关重要的技术,它提供了一种标准的API,使得Java应用程序能够与各种关系型数据库进行交互。这种API允许开发人员使用统一的方式...
一、JDBC概述 JDBC是Java平台的一部分,它定义了一个用于与各种数据库进行通信的API,包括数据库连接、SQL语句的执行以及结果集的处理。JDBC由一系列接口和类组成,使得开发者能够编写与特定数据库无关的代码。在...
#### 一、JDBC概述 JDBC(Java DataBase Connectivity),即Java数据库连接,是由Sun Microsystems(现已被Oracle收购)制定的一种用于执行SQL语句的Java API,它可以为多种关系数据库提供统一访问,它由一组用Java...
### 9.1 JDBC 概述 1. **数据库管理系统的重要性**:在互联网中,动态交互功能是网站不可或缺的特性,而这往往需要与数据库的交互来实现。数据库管理系统(DBMS)存储着网站所需的信息,应用程序通过访问 DBMS 来获取...
1.2 JDBC概述 JDBC是Java语言与数据库交互的一套标准API,由Sun Microsystems公司开发并维护,允许Java开发者编写跨平台的数据库应用程序。通过JDBC,开发者可以实现对各种数据库的连接、查询、更新等操作。 1.3 ...
JDBC概述 JDBC是Java语言中用于连接数据库的API(Application Programming Interface),它提供了一种统一的方式来访问不同的数据库管理系统。使用JDBC,开发者可以编写Java程序来连接数据库、执行SQL语句、处理...
一、JDBC 概述 JDBC(Java Database Connectivity)是 Java 语言中的一种标准数据库连接技术,几乎所有需要访问数据库的 J2EE 应用程序都直接或间接地使用了它。JDBC 提供了一个统一的接口来访问不同的关系数据库...
#### 一、JDBC概述 **1.1 什么是JDBC?** JDBC(Java Database Connectivity)是Java平台上的数据库访问技术。简而言之,它是Java语言与各种数据库进行交互的桥梁。通过JDBC,开发者可以使用统一的API来操作不同的...
### JDBC概述与关键技术知识点 #### 一、JDBC简介 JDBC(Java Database Connectivity)是Sun Microsystems(现已被Oracle收购)推出的一种用于Java应用程序访问关系型数据库的标准接口。这一技术的发展背景主要是...