JDBC入门

 

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");
            }
        }
	}

}
 

 

 

 

 

资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 无锡平芯微半导体科技有限公司生产的A1SHB三极管(全称PW2301A)是一款P沟道增强型MOSFET,具备低内阻、高重复雪崩耐受能力以及高效电源切换设计等优势。其技术规格如下:最大漏源电压(VDS)为-20V,最大连续漏极电流(ID)为-3A,可在此条件下稳定工作;栅源电压(VGS)最大值为±12V,能承受正反向电压;脉冲漏极电流(IDM)可达-10A,适合处理短暂高电流脉冲;最大功率耗散(PD)为1W,可防止器件过热。A1SHB采用3引脚SOT23-3封装,小型化设计利于空间受限的应用场景。热特性方面,结到环境的热阻(RθJA)为125℃/W,即每增加1W功率损耗,结温上升125℃,提示设计电路时需考虑散热。 A1SHB的电气性能出色,开关特性优异。开关测试电路及波形图(图1、图2)展示了不同条件下的开关性能,包括开关上升时间(tr)、下降时间(tf)、开启时间(ton)和关闭时间(toff),这些参数对评估MOSFET在高频开关应用中的效率至关重要。图4呈现了漏极电流(ID)与漏源电压(VDS)的关系,图5描绘了输出特性曲线,反映不同栅源电压下漏极电流的变化。图6至图10进一步揭示性能特征:转移特性(图7)显示栅极电压(Vgs)对漏极电流的影响;漏源开态电阻(RDS(ON))随Vgs变化的曲线(图8、图9)展现不同控制电压下的阻抗;图10可能涉及电容特性,对开关操作的响应速度和稳定性有重要影响。 A1SHB三极管(PW2301A)是高性能P沟道MOSFET,适用于低内阻、高效率电源切换及其他多种应用。用户在设计电路时,需充分考虑其电气参数、封装尺寸及热管理,以确保器件的可靠性和长期稳定性。无锡平芯微半导体科技有限公司提供的技术支持和代理商服务,可为用户在产品选型和应用过程中提供有
资源下载链接为: https://pan.quark.cn/s/9648a1f24758 在 JavaScript 中实现点击展开与隐藏效果是一种非常实用的交互设计,它能够有效提升用户界面的动态性和用户体验。本文将详细阐述如何通过 JavaScript 实现这种功能,并提供一个完整的代码示例。为了实现这一功能,我们需要掌握基础的 HTML 和 CSS 知识,以便构建基本的页面结构和样式。 在这个示例中,我们有一个按钮和一个提示框(prompt)。默认情况下,提示框是隐藏的。当用户点击按钮时,提示框会显示出来;再次点击按钮时,提示框则会隐藏。以下是 HTML 部分的代码: 接下来是 CSS 部分。我们通过设置提示框的 display 属性为 none 来实现默认隐藏的效果: 最后,我们使用 JavaScript 来处理点击事件。我们利用事件监听机制,监听按钮的点击事件,并通过动态改变提示框的 display 属性来实现展开和隐藏的效果。以下是 JavaScript 部分的代码: 为了进一步增强用户体验,我们还添加了一个关闭按钮(closePrompt),用户可以通过点击该按钮来关闭提示框。以下是关闭按钮的 JavaScript 实现: 通过以上代码,我们就完成了点击展开隐藏效果的实现。这个简单的交互可以通过添加 CSS 动画效果(如渐显渐隐等)来进一步提升用户体验。此外,这个基本原理还可以扩展到其他类似的交互场景,例如折叠面板、下拉菜单等。 总结来说,JavaScript 实现点击展开隐藏效果主要涉及 HTML 元素的布局、CSS 的样式控制以及 JavaScript 的事件处理。通过监听点击事件并动态改变元素的样式,可以实现丰富的交互功能。在实际开发中,可以结合现代前端框架(如 React 或 Vue 等),将这些交互封装成组件,从而提高代码的复用性和维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值