`
阅读更多

 

JDBC入门

JDBC简介

JDBC是一个能够处理任何类型数据表的Java API,尤其是处理关系型数据。JDBC能够帮助你写的Java程序来管理以下三种程序:

连接数据源,比如连接数据库

发送查询和更新命令到数据库

相应检索和查询从数据库中得到的查询结果

有了JDBC向数据库发送SQL指令就变成了一件很容易的事情,我们不必为每一种数据库专门编写数据库访问和操作程序。现在我们只关心JDBC API就够了,只要会写SQL会用JDBC API就可以用SQL操作任意类型的数据库,不管是ORACLESysbaseMysql还是SQL Server

 

JDBC组件

JDBC包含了4大组件:

The JDBC API

JDBC API提供了Java语言访问关系数据的程序代码支持,使用JDBC API可以执行SQL命令,获取返回结果和数据库事物操作。目前JDBC 4.0 API被分割在了java.sql javax.sql软件包下。

JDBC Driver Manger

JDBC Driver Manger定义了能够通过JDBC连接到Java程序的一系列对象。

JDBC Test Suite

JDBC驱动程序测试套件帮助您确定JDBC驱动程序将运行的程序。

JDBC-ODBC Bridge

JDBC-ODBC Bridge 使得Java程序通过ODBC桥提供的JDBC驱动程序访问关系型数据。

看到这里您或许对JDBC有点疑惑了,这都四大组件了,还简单呢?Don’worry,其实我们平时常用的就只有前面的两大组件,下面的两个组件由于限定了特殊的环境因素,所以并不是很常用,当然也不是没用。

 

JDBC架构

JDBC API通常提供“两层”和“三层”两种模型来访问数据库:

两层模型:


三层模型:


 

究竟怎样使用JDBC 来访问和操作数据库?

首先你要有数据库,并且可以访问,然后你还要对JDBC API有所了解。OK,首先要说明选择什么样的数据库并不是很重要,这里我们要把重点放在对JDBC API 的了解和掌握上,OK?我们并不关心你某某数据库学习怎么样,到了后面我们可以看到只要是DBA让我们访问数据库,嘿嘿,就该我们使用JDBC大显身手了。OK,一步一步来吧。

OK,你可以先安装一个数据库(数据库服务器而不是客户端),当然这个并不重要,如果你有现成的数据库可以访问,那么久可以掠过了。然后我们还需要你有个开发工具,或者说是IDE。然后根据你的数据库来选择数据库驱动。如果你已经完整安装了最新的JDKNetBeans with Sun Application Server那么OK,你的装备已经很完整了。

现在来说一下使用JDBC来访问和操作数据库的步骤,暂且称之为JDBC五部曲吧。

加载数据库驱动

建立数据库连接

交待SQL指令

处理SQL返回结果

关闭资源

 

跟着JDBC五部曲走

加载数据库驱动

首先我们要加载数据库驱动,驱动?做什么用的呢?现在我们已经知道Java通过JDBC技术来访问不同的数据库,JDBC可以看做是Java应用程序和数据库之间的一个桥梁。要知道现在又很多种数据库,主流数据库加上N多叫不上名字的数据库,万一下一秒又诞生一个数据库JDBC就能马上支持?No,它还没有那么神,JDBC的设计采用了接口和实现相分离的设计思想,将接口和一些基本操作类放在java.sqljavax.sql下,而接口的实现类就叫做数据库驱动程序,数据库驱动程序由数据库厂商提供。事实证明JDBC的这种设计规范是明智的。

现在的数据库驱动程序大的数据库厂商都有提供,因为各个数据库驱动程序的下载地址不同,在这里不详细提供。数据库驱动程序通常是一个编译好的.jar文件。这里为了说明上方便,我使用Mysql数据库及数据库驱动程序作为说明。

有了数据库驱动程序接下来该怎样加载驱动呢?加载驱动其实非常简单仅仅需要一行代码而已。如果你使用的是Mysql数据库那么就可以这样来写:

Class.forName(“com.mysql.jdbc.Driver”);

或许你也发现了,引号中间的那个字符串其实是一个类名,不同的数据库有所不同,数据库驱动文档会提供给你这个类名的,不需要去记忆。

建立数据库连接

OK,驱动加载完毕,接下来我们开始和数据库建立连接。建立连接的方式也很简单,因为之前驱动已经加载好了,按照接口和实现分离的设计思想,试想下获取连接的方式肯定不在驱动程序上,因为JDBC要和每个数据库打交道肯定预先设计好了统一的连接方式,而究竟怎样连接具体的数据库才由驱动程序决定。

连接数据库仅仅需要一行代码,如果你使用的是Mysql数据库那么就可以这样来写:

DriverManager.getConnection("jdbc:mysql://localhost:3306/database");

或许你有发现了,引号中间的那个字符串是有几个部分组成的,当然这个不需要去记忆,在数据库驱动文档中会提供给你。jdbc:数据库名:数据库位置/数据库名称。这里我的数据库在本地所以就使用了localhost,如果你是通过网络来访问远程数据库,那么可以使用远端的IP地址。后面有个3306代表的是数据库对外提供的访问端口号。我们通常把上述字符串称之为连接字符串,连接字符串中的数据库位置和访问端口号可以问下DBA

有时候这样做了并不算完,因为我们平时用客户端软件访问数据库时通常还要输入用户名和密码,除非DBA已经允许匿名访问,要不在建立数据库连接时我们是要填写用户名和密码的。如果是这样的话(通常是这样)我们可以这么来做:

DriverManager.getConnection(“”,“”,“”); 依次填入三个字符串,连接字符串,用户名,密码。

交待SQL指令

交待SQL指令就是我们事先定义好SQL语句,定义SQL语句是使用字符串的方式。比如我们可以写:

String sqlStr = “INSERT INTO STU(NO,NAME,SOCRES) VALUES(110314001,‘TOM’,90)”

OK我们看到这就是我们平时所写的SQL(Smith为字符串在数据库中需要用’’包含起来)SQL语句交待完毕。

执行SQL返回结果

执行SQL语句我们使用的是Statement对象的一些列execute()executeUpdate()方法。不过前提是我们要有Stamemet对象,但java.sql.Statement是一接口,看来要从之前的资源中获得Statement对象了。在上面我们已经获得的连接,得到了连接对象。DriverManger.getConnection()返回了一个Connection对象,然后我们就拿这个Connection对象来继续做文章,我们可以看到在JDBC APIConnection对象有一个createStatement()方法。OK,通过createStatement()方法我们得到了Statement对象,然后我们就可以调用execute()方法了。

如果要处理我们上面的SQL那么我们可以这样来写:(假设connConnection的实例,stmtStatement的实例):

Statement stmt = conn.createStatement();

stmt.execute(sqlStr);

这样SQL就被执行了,SQL执行后会产生结果,对于SQL返回的结果的处理由于方法的返回值和处理的SQL语句种类不同所以处理的方式也不同,这里暂且不讨论处理结果的问题,总之通过execute方法后SQL被执行了就够了。

关闭资源

当我们在进行SQL处理操作也就是和数据库打交道时会产生一定的资源开销,如果操作完SQL如果没有关闭资源的话,那问题也就随之而来了。假设在使用银行的交易系统时同时有一千万个用户来登录并且交易,那么我们的资源开销会很大,如果不关闭,再来一千万,然后随着时间的积累,后果可想而知。为了避免这种问题的出现我们需要关闭使用的资源。我们可以依次调用close()方法来关闭资源,我们应当首先关闭Statement,然后再关闭Connection对象,细想一下关闭是要有顺序的,如果要关闭资源我们可以这样来做:

stmt.close();

conn.close();

Connection对象在关闭后驱动资源的关闭就不用我们操心啦,数据库会有特定的机制来关闭。

但是如果一千万个用户用完后都要关闭资源,试想下也是一个不小的开销。那究竟怎么办呢?有好办法没?这个问题就留给大家了,这个是一个值得讨论的事情。

简单实例

五部曲就到此为止了,下面我们来简单操作一下看看。这里我使用的是WIN XP SP3,数据库是使用的Mysql5.1IDE使用的是Eclipse Helios

首先呢我们在我们的Mysql上创建一个TableSTUDENT(这里我们使用Mysql自带的Test数据库)

接下来我们在Eclipse上创建一个jdbc的项目,创建完成后我们就跟着我们的JDBC五部曲走。首先要把数据库驱动加载进来。我们之前说过数据库驱动厂商会封装成一个jar包,然后我们在代码上也看到过如何加载数据库驱动程序,好了使用IDE在实际操作中我们需要将这个jar包和我们的Java应用程序组成一个整体,在Eclipse中究竟怎样做呢?

首先右击我们的jdbc的项目:



 选择相应的jar包就OK了。

下面简单列出一个Demo,后面我们会慢慢改善下面的代码。OK就到这里了。

package net.lele.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class HelloJDBC {

	public static void main(String[] args) {
		
		Connection conn = null;
        Statement stmt = null;
        
        // 1.加载数据库驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
        }catch (ClassNotFoundException e) {
            System.out.println("Can not find class,Load Driver was failed.");
        }
        // 2.建立数据库连接
        try{
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","hello");
        }catch (SQLException e) {
            System.out.println("Connecte to database was failed.");
        }
        // 3.交待SQL指令
        String sqlStr = "INSERT INTO STUDENT(NAME,SCORE) VALUES('TOM',90)";
        // 4.处理SQL返回结果
        try {
            stmt = conn.createStatement();
        }catch (SQLException e) {
            System.out.println("Create the object of Statement was failed.");
        }
        try {
            int rowNum = stmt.executeUpdate(sqlStr); //rowNum为执行SQL后所影响的行数
            System.out.println(rowNum + " row affected");
        }catch (SQLException e) {
            System.out.println("Execute SQL was failed.");
        }
        //关闭资源
        if(stmt != null) {
            try {
                stmt.close();
            }catch (SQLException e) {
                System.out.println("Close the object of Statement was failed");
            }
        }
        if(conn != null) {
            try {
                conn.close();
            }catch (SQLException e) {
                System.out.println("Close the object of Connection was failed");
            }
        }
	}

}
 

 

 

 

 

  • 大小: 8.8 KB
  • 大小: 14.8 KB
  • 大小: 5.5 KB
  • 大小: 15.1 KB
1
6
分享到:
评论

相关推荐

    JDBC 入门电子书.zip

    **JDBC 入门知识详解** Java Database Connectivity (JDBC) 是Java编程语言中用于与各种类型数据库交互的标准API。它是Java平台的核心部分,由Java SE的Java SQL类库提供,使得开发者能够编写数据库独立的代码,...

    Java_JDBC.rar_JDBC入门

    在这个“Java_JDBC.rar_JDBC入门”的资源包中,我们主要会探讨以下几个关键知识点: 1. **JDBC API概述**:JDBC是Java平台上的一个核心部分,由Java.sql包中的类和接口组成。主要接口包括Connection(数据库连接)...

    jdbc入门至精通

    【jdbc入门至精通】 在Java开发中,JDBC(Java Database Connectivity)是连接Java应用程序与各种数据库的关键技术。本文将从基础概念出发,逐步深入,帮助读者从入门到精通JDBC。 **第二节 jdbc的概念** 2.1 **...

    JDBC_2.rar_JDBC入门例子

    这个名为“JDBC_2.rar”的压缩包文件包含了JDBC入门的例子,非常适合初学者学习和理解JDBC的基本概念和用法。 首先,我们来看一下JDBC的核心组件: 1. **驱动管理器(Driver Manager)**:它是JDBC的入口点,负责...

    ha-jdbc入门demo

    【ha-jdbc入门demo】是针对高可用性(High Availability, HA)数据库连接技术的一次实践,主要聚焦在如何利用ha-jdbc实现数据库的高可用和负载均衡。在这个入门示例中,我们将深入理解ha-jdbc的工作原理,以及如何...

    JAVA数据库接口JDBC入门基础讲座

    **Java数据库接口JDBC入门基础讲座** 在Java编程领域,JDBC(Java Database Connectivity)是连接Java应用程序与各种类型数据库的重要桥梁。它提供了一套标准的API,使得开发者能够使用Java语言来操作数据库,实现...

    SpringJDBC入门Demo

    一个简单的Spring JDBC入门Demo通常包括以下步骤: - 配置数据源 - 创建JdbcTemplate实例 - 编写SQL语句 - 使用JdbcTemplate的方法执行SQL - 实现RowMapper或ResultSetExtractor进行结果映射 通过这个入门...

    JDBC入门中文文档

    **JDBC(Java Database Connectivity)**是Java...这个“JDBC入门中文文档”将详细介绍这些概念,帮助初学者快速掌握JDBC的基本用法和最佳实践。通过深入学习和实践,你将能够利用JDBC实现高效、可靠的数据库应用程序。

    JDBC入门基础讲座

    **JDBC入门基础讲座** Java Database Connectivity(JDBC)是Java平台中用于与关系数据库进行交互的一种标准API。它是Java编程语言的一部分,允许程序员使用Java语言来访问和处理各种数据库。JDBC提供了一组接口和...

    jdbc入门、分页以及事务

    **JDBC入门** Java Database Connectivity (JDBC) 是Java编程语言中用于与关系数据库交互的一组接口和类。它是Java平台的标准部分,允许应用程序通过Java代码执行SQL命令。以下是JDBC入门的一些关键知识点: 1. **...

    JDBC入门案例详解源代码压缩包

    本压缩包提供了JDBC入门案例的源代码,旨在帮助初学者理解并掌握JDBC的基本用法。 在学习JDBC时,你需要了解以下几个关键知识点: 1. **JDBC驱动**:JDBC驱动是Java程序与数据库之间的桥梁,主要有四种类型:Type ...

    JAVA数据库编程JDBC 与 Java数据库接口JDBC入门基础讲座 与 JDBC API数据库编程实作教材-程序设计-JAVA JDBC全压缩包.rar

    本压缩包包含了三个重要组成部分:《JAVA数据库编程JDBC》、《Java数据库接口JDBC入门基础讲座》以及《JDBC API数据库编程实作教材》。这些资源将帮助初学者全面理解和掌握JDBC的基础知识和实践技巧。 《JAVA数据库...

    java jdbc入门教程笔记

    以下是一些关于JDBC入门的关键知识点: 1. **注册驱动**: 在JDBC中,注册驱动是为了使Java应用程序能够识别并连接到特定的数据库。通常有两种方法: - 使用`Class.forName()`方法,例如`Class.forName(...

    JDBC 入门教程内含源码以及说明书可以自己运行复现.zip

    **JDBC 入门教程概览** 本教程旨在帮助初学者深入理解Java数据库连接(Java Database Connectivity,简称JDBC)的基础知识,通过源码实践和详细的说明书,你可以自行运行示例,加深对JDBC的理解。以下将分别介绍...

    基于框架的Web开发-使用springJDBC入门.doc

    3.1 使用spring JDBC入门 1 依赖包 使用spring JDBC最基础的jar包如下,将这些jar包加入java build path中。 (1) spring框架中(4.3.3):oap、beans、context、core、expression、tx(事务)、test(测试)、jdbc ...

    【解惑】jdbc入门通透说

    【解惑】jdbc入门通透说 Java平台基础但重要的一小节

    JDBC入门(学习课件1)

    **JDBC入门(学习课件1)** Java Database Connectivity(JDBC)是Java语言中用于与各种数据库进行交互的一种标准接口。它由Sun Microsystems(现已被Oracle收购)开发,是Java平台的标准部分,允许Java应用程序...

    JDBC入门案例数据表文件

    JDBC入门案例中使用

Global site tag (gtag.js) - Google Analytics