您的位置 首页 > 系统更新

驱动程序开发实例_驱动程序开发工具

1.求电子系统设计论文 在单片机的P1接8个LED,编写驱动程序使LED依次点亮,间隔为1秒

2.Windows设备驱动程序WDF开发的目录

3.深入浅出windows驱动开发的目录

4.求助用LabVIEW根据GPIB协议编写程序

5.JDBC使用步骤过程

驱动程序开发实例_驱动程序开发工具

一、什么是驱动程序

根据百度百科:驱动程序,英文名为“Device Driver”,全称为“设备驱动程序”, 是一种可以使计算机和设备通信的特殊程序,可以 说相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,如某设备的驱动程序未能正确安装,便不能正常工作。 因此,驱动程序被誉为“ 硬件的灵魂”、“硬件的主宰”、和“硬件和系统之间的桥梁”等。

刚安装好的系统操作系统,很可能驱动程序安装得不完整。硬件越新,这种可能性越大。菜菜熊之前看到的“图标很大且颜色难看”就是没有安装好驱动的原因。

在软件测试中:在自底向上测试中,要编写称为测试驱动的模块调用正在测试的模块。测试驱动模块以和将来真正模块同样的方式挂接,向处于测试的模块发送测试用例数据,接受返回结果,验证结果是否正确。

二、驱动程序的作用

随着电子技术的飞速发展,电脑硬件的性能越来越强大。驱动程序是直接工作在各种硬件设备上的软件,其“驱动”这个名称也十分形象的指明了它的功能。正是通过驱动程序,各种硬件设备才能正常运行,达到既定的工作效果。

硬件如果缺少了驱动程序的“驱动”,那么本来性能非常强大的硬件就无法根据软件发出的指令进行工作,硬件就是空有一身本领都无从发挥,毫无用武 之地。这时候,电脑就正如古人所说的“万事俱备,只欠东风”,这“东风”的角色就落在了驱动程序身上。如此看来,驱动程序在电脑使用上还真起着举足轻重的 作用。

从理论上讲,所有的硬件设备都需要安装相应的驱动程序才能正常工作。但像CPU、内存、主板、软驱、键盘、显示器等设备却并不需要安装驱动程序也可以正常工作,而显卡、声卡、网卡等却一定要安装驱动程序,否则便无法正常工作。这是为什么呢?

这主要是由于这些硬件对于一台个人电脑来说是必需的,所以早期的设计人员将这些硬件列为BIOS能直接支持的硬件。换句话说,上述硬件安装后就 可以被BIOS和操作系统直接支持,不再需要安装驱动程序。从这个角度来说,BIOS也是一种驱动程序。但是对于其他的硬件,例如:网卡,声卡,显卡等等 却必须要安装驱动程序,不然这些硬件就无法正常工作。

三、驱动程序的界定

驱动程序可以界定为官方正式版、微软WHQL认证版、第三方驱动、发烧友修改版、Beta测试版。

1、官方正式版

官方正式版驱动是指按照芯片厂商的设计研发出来的,经过反复测试、修正,最终通过官方渠道发布出来的正式版驱动程序,又名公版驱动。通常官方正 式版的发布方式包括官方网站发布及硬件产品附带光盘这两种方式。稳定性、兼容性好是官方正式版驱动最大的亮点,同时也是区别于发烧友修改版与测试版的显著 特征。因此推荐普通用户使用官方正式版,而喜欢尝鲜、体现个性的玩家则推荐使用发烧友修改版及Beta测试版。

2、微软WHQL认证版

WHQL是Windows Hardware Quality Labs的缩写,是微软对各硬件厂商驱动的一个认证,是为了测试驱动程序与操作系统的相容性及稳定性而制定的。也就是说通过了WHQL认证的驱动程序与Windows系统基本上不存在兼容性的问题。

3、第三方驱动

第三方驱动一般是指硬件产品OEM厂商发布的基于官方驱动优化而成的驱动程序。第三方驱动拥有稳定性、兼容性好,基于官方正式版驱动优化并比官 方正式版拥有更加完善的功能和更加强劲的整体性能的特性。因此,对于品牌机用户来说,笔者推荐用户的首选驱动是第三方驱动,第二选才是官方正式版驱动;对 于组装机用户来说,第三方驱动的选择可能相对复杂一点,因此官方正式版驱动仍是首选。

4、发烧友修改版

发烧友令笔者首先就联想到了显卡,这是为什么呢?因为一直以来,发烧友很常都被用来形容游戏爱好者。笔者的这个想法也正好和发烧友修改版的诞生 典故相符的,因为发烧友修改版的驱动最先就是出现在显卡驱动上的,由于众多发烧友对游戏的狂热,对于显卡性能的期望也就是比较高的,这时候厂商所发布的显 卡驱动就往往都不能满足游戏爱好者的需求了,因此经修改过的以满足游戏爱好者更多的功能性要求的显卡驱动也就应运而生了。如今,发烧友修改版驱动又名改版 驱动,是指经修改过的驱动程序,而又不专指经修改过的驱动程序。

5、Beta测试版

测试版驱动是指处于测试阶段,还没有正式发布的驱动程序。这样的驱动往往具有稳定性不够、与系统的兼容性不够等bug。尝鲜和风险总是同时存在的,所以对于使用Beta测试版驱动的用户要做好出现故障的心理准备。

四、驱动程序介绍

驱动程序(Device Driver)全称为“设备驱动程序”,是一种可以使计算机和设备通信的特殊程序,可以说相当于硬件的接口,操作系统只能通过这个接口,才能控制硬件设备的工作,如某设备的驱动程序未能正确安装,便不能正常工作。

正因为这个原因,驱动程序在系统中的所占的地位十分重要,一般当操作系统安装完毕后,首要的便是安装硬件设备的驱动程序。不过,大多数情况下,我们并不需要安装所有硬件设备的驱动程序,例如硬盘、显示器、光驱、键盘、鼠标等就不需要安装驱动程序,而显卡、声卡、扫描仪、摄像头、Modem等就需要安装驱动程序。另外,不同版本的操作系统对硬件设备的支持也是不同的,一般情况下版本越高所支持的硬件设备也越多,例如笔者使用了Windows XP,装好系统后一个驱动程序也不用安装。

设备驱动程序用来将硬件本身的功能告诉操作系统,完成硬件设备电子信号与操作系统及软件的高级编程语言之间的互相翻译。当操作系统需要使用某个硬件时,比如:让声卡播放音乐,它会先发送相应指令到声卡驱动程序,声卡驱动程序接收到后,马上将其翻译成声卡才能听懂的电子信号命令,从而让声卡播放音乐。

所以简单的说,驱动程序提供了硬件到操作系统的一个接口以及协调二者之间的关系,而因为驱动程序有如此重要的作用,所以人们都称“驱动程序是硬件的灵魂”、“硬件的主宰”,同时驱动程序也被形象的称为“硬件和系统之间的桥梁”。

驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。操作系统不同,硬件的驱动程序也不同,各个硬件厂商为了保证硬件的兼容性及增强硬件的功能会不断地升级驱动程序。如:Nvidia 显卡芯片公司平均每个月会升级显卡驱动程序2-3次。驱动程序是硬件的一部分,当你安装新硬件时,驱动程序是一项不可或缺的重要元件。凡是安装一个原本不属于你电脑中的硬件设备时,系统就会要求你安装驱动程序,将新的硬件与电脑系统连接起来。驱动程序扮演沟通的角色,把硬件的功能告诉电脑系统,并且也将系统的指令传达给硬件,让它开始工作。

当你在安装新硬件时总会被要求放入“这种硬件的驱动程序”,很多人这时就开始头痛。不是找不到驱动程序的盘片,就是找不到文件的位置,或是根本不知道什么是驱动程序。比如安装打印机这类的硬件外设,并不是把连接线接上就算完成,如果你这时候开始使用,系统会告诉你,找不到驱动程序。怎么办呢?参照说明书也未必就能顺利安装。其实在安装方面还是有一定的惯例与通则可寻的,这些都可以帮你做到无障碍安装。

在Windows系统中,需要安装主板、光驱、显卡、声卡等一套完整的驱动程序。如果你需要外接别的硬件设备,则还要安装相应的驱动程序,如:外接游戏硬件要安装手柄、方向盘、摇杆、跳舞毯等的驱动程序,外接打印机要安装打印机驱动程序,上网或接入局域网要安装网卡、Moden甚至ISDN、ADSL的驱动程序。说了这么多的驱动程序,你是否有一点头痛了。下面就介绍Windows系统中各种的不同硬件设备的驱动程序,希望能让你拨云见日。

在Windows 9x下,驱动程序按照其提供的硬件支持可以分为:声卡驱动程序、显卡驱动程序、鼠标驱动程序、主板驱动程序、网络设备驱动程序、打印机驱动程序、扫描仪驱动程序等等。为什么没有CPU、内存驱动程序呢?因为CPU和内存无需驱动程序便可使用,不仅如此,绝大多数键盘、鼠标、硬盘、软驱、显示器和主板上的标准设备都可以用Windows自带的标准驱动程序来驱动,当然其它特定功能除外。如果你需要在Windows系统中的DOS模式下使用光驱,那么还需要在DOS模式下安装光驱驱动程序。多数显卡、声卡、网卡等内置扩展卡和打印机、扫描仪、外置Modem等外设都需要安装与设备型号相符的驱动程序,否则无法发挥其部分或全部功能。驱动程序一般可通过三种途径得到,一是购买的硬件附带有驱动程序;二是Windows系统自带有大量驱动程序;三是从Internet下载驱动程序。最后一种途径往往能够得到最新的驱动程序。

供Windows 9x使用的驱动程序包通常由一些.vxd(或.386)、.drv、.sys、.dll或.exe等文件组成,在安装过程中,大部分文件都会被拷贝到“Windows\ System”目录下。

五、驱动程序的开发

驱动程序的开发工作是很具挑战性的,因为必须配合著硬件与软件上相当明确与高级的平台技术。由于大多数的驱动程序(device drivers)运行在内核模式(kernel mode),软件的错误经常造成系统严重的不稳定,例如蓝屏(blue screen),这跟过去的用户模式(user mode)下的程序设计(例如Delphi、VB、Ja)有明显的差异性。

Windows平台

为了大量减轻驱动程序开发人员的负担,微软不断的改进驱动程序的开发软件与架构,从早期复杂深晦的VxD,到Windows XP上的Windows Driver Model(以下简称WDM)开发架构,如今Windows Driver Foundation(以下简称WDF)已成为新一代的Windows平台驱动程序发展架构,这个架构大量简化了驱动程序的开发流程,更符合面向对象的精神,此架构包含了UserMode Driver Framework 与 Kernel Mode DriverFramework两种开发模式。在开发Windows平台上的驱动程序之前,必须先安装DDK包,目前DDK最新版本为5600,同时支持WDM与WDF两种架构。

Linux平台

Linux作为UNIX的一个变种,继承了UNIX的设备管理方法,将所有的设备是具体的文件,通过文件系统层对设备进行访问。 这种设备管理方法可以很好地做到“设备无关性”,可以根据硬件外设的更新进行方便的扩展。

Linux中的设备大致可以分为三类:字符设备,块设备,网络设备。

字符设备没有缓冲区,以字节为单位顺序处理数据,不支持随机读写。常见的字符设备如普通打印机、系统的串口、终端显示器、嵌入式设备中的简单按键、手写板等。

块设备是指在输入输出时数据处理以块为单位的设备,一般都用缓冲技术,支持数据的随机读写。典型的块设备有硬盘、光驱等。

字符设备和块设备面向的上一层是文件系统层。对用户来说,块设备和字符设备的访问接口都是一组基于文件的系统调用,如read, write等。

网络设备与块设备和字符设备不同,网络设备面向的上一层是网络协议层。设备文件是一个唯一的名字(如eth0),在文件系统中不存在对应的节点项。内核和网络驱动程序之间的通信使用的是一套和数据包传输相关的函数,而不是read, write等。

每一个设备都有一对主设备号、次设备号的参数作为唯一的标识。主设备号标识设备对应的驱动程序;次设备号用来区分具体驱动程序的实例。主设备号的获取可以通过动态分配或指定的方式。在嵌入式系统中外设较少,一般用指定的方式。

n [编辑本段]驱动程序的一般安装顺序  驱动程序安装的一般顺序:主板芯片组(Chipset)→显卡(VGA)→声卡(Audio)→网卡(LAN)→无线网卡(Wireless LAN)→红外线(IR)→触控板(Touchpad)→PCMCIA控制器(PCMCIA)→读卡器(Flash Media Reader)→调制解调器(Modem)→其它(如电视卡、CDMA上网适配器等等)。不按顺序安装很有可能导致某些软件安装失败。

第一步,安装操作系统后,首先应该装上操作系统的Service Pack(SP)补丁。我们知道驱动程序直接面对的是操作系统与硬件,所以首先应该用SP补丁解决了操作系统的兼容性问题,这样才能尽量确保操作系统和驱动程序的无缝结合。

第二步,安装主板驱动。主板驱动主要用来开启主板芯片组内置功能及特性,主板驱动里一般是主板识别和管理硬盘的IDE驱动程序或补丁,比如Intel芯片组的INF驱动和VIA的4in1补丁等。如果还包含有P补丁的话,一定要先安装完IDE驱动再安装P补丁,这一步很重要,也是很多造成系统不稳定的直接原因。

第三步,安装DirectX驱动。这里一般推荐安装最新版本,目前DirectX的最新版本是DirectX 9.0C。可能有些用户会认为:“我的显卡并不支持DirectX 9,没有必要安装DirectX 9.0C”,其实这是个错误的认识,把DirectX等同为了Direct3D。DirectX是微软嵌在操作系统上的应用程序接口(API),DirectX由显示部分、声音部分、输入部分和网络部分四大部分组成,显示部分又分为Direct Draw(负责2D加速)和Direct 3D(负责3D加速),所以说Direct3D只是它其中的一小部分而已。而新版本的DirectX改善的不仅仅是显示部分,其声音部分(DirectSound)——带来更好的声效;输入部分(Direct Input)——支持更多的游戏输入设备,并对这些设备的识别与驱动上更加细致,充分发挥设备的最佳状态和全部功能;网络部分(DirectPlay)——增强计算机的网络连接,提供更多的连接方式。只不过是DirectX在显示部分的改进比较大,也更引人关注,才忽略了其他部分的功劳,所以安装新版本的DirectX的意义并不仅是在显示部分了。当然,有兼容性问题时另当别论。

第四步,这时再安装显卡、声卡、网卡、调制解调器等插在主板上的板卡类驱动。

第五步,最后就可以装打印机、扫描仪、读写机这些外设驱动。

这样的安装顺序就能使系统文件合理搭配,协同工作,充分发挥系统的整体性能。

另外,显示器、键盘和鼠标等设备也是有专门的驱动程序,特别是一些品牌比较好的产品。虽然不用安装它们也可以被系统正确识别并使用,但是安装上这些驱动程序后,能增加一些额外的功能并提高稳定性和性能 [编辑本段]Windows中的inf文件  Windows怎样知道安装的是什么设备,以及要拷贝哪些文件呢?答案在于.inf文件。.inf是从Windows 95时代开始引入的一种描述设备安装信息的文件,它用特定语法的文字来说明要安装的设备类型、生产厂商、型号、要拷贝的文件、拷贝到的目标路径,以及要添加到注册表中的信息。通过读取和解释这些文字,Windows便知道应该如何安装驱动程序。目前几乎所有硬件厂商提供的用于Windows 9x下的驱动程序都带有安装信息文件。事实上,.inf文件不仅可用于安装驱动程序,还能用来安装与硬件并没有什么关系的软件,例如Windows 98支持“Windows更新”功能,更新时下载的系统部件就是利用.inf文件来说明如何安装该部件的。

在安装驱动程序时,Windows一般要把.inf文件拷贝一份到“Win-dows\Inf”或“Windows\Inf\Other”目录下,以备将来使用。Inf目录下除了有.inf文件外,还有两个特殊文件Drvdata.bin和Drvidx.bin,以及一些.pnf文件,它们都是Windows为了加快处理速度而自动生成的二进制文件。Drvdata.bin和Drvidx.bin记录了.inf文件描述的所有硬件设备,也许朋友们会有印象:当我们在安装某些设备时,经常会看到一个“创建驱动程序信息库”的窗口,此时Windows便正在生成这两个二进制文件。

Windows 9x专门提供有“添加新硬件向导”(以下简称硬件向导)来帮助使用者安装硬件驱动程序,使用者的工作就是在必要时告诉硬件向导在哪儿可以找到与硬件型号相匹配的.inf文件,剩下的绝大部分安装工作都将由硬件安装向导自己完成。

给硬件设备安装驱动程序对Windows 9x用户来说并不是一件陌生事,在安装或重装Windows时需要安装驱动程序,在购买了某些新硬件之后也需要安装驱动程序。如果驱动程序安装不正确,系统中某些硬件就可能无法正常使用。虽然Windows 9x支持即插即用,能够为用户减轻不少工作,但由于PC机的设备有非常多的品牌和型号,加上各种新产品不断问世,Windows不可能自动识别出所有设备,因此在安装很多设备时都需要人工干预。

求电子系统设计论文 在单片机的P1接8个LED,编写驱动程序使LED依次点亮,间隔为1秒

  一 引言

 测试驱动开发在减少开发努力的同时也改进了软件的开发质量 单元测试 作为一整套测试策略的基础 必须是全面的 且要求易于建立和执行迅速 然而 对执行环境和被测试类外部代码的依赖性使我们实现这些目标变得更为复杂 例如 把应用程序发布到容器将显著地延长代码和测试的周期 而对其它类的依赖性通常也会导致测试的建立更加复杂和测试运行速度更为缓慢

 集成两个流行的测试框架(StrutsTestCase和EasyMock)来单元测试Struts应用程序将会更为容易地建立测试并加快测试速度 然而 这两个框架之间尚存在一些 隔阂 从而很难把它们理想地集成到一起 在本文中 我将通过分析两种方案(一个面向对象的方案和一个面向方面的方案)来探讨这个问题 同时 我还将展示面向方面编程(AOP)是如何通过简化一些看起来很困难的问题的解决方案而进一步补充面向对象编程(OOP)的

  二 集成需要

 一个典型的Struts应用程序既能够展示也其所使用的执行环境也会体现出类之间的依赖性问题 这是因为Struts行为(Action)是在一个servlet容器内执行的 并且典型情况下会调用其它的类来处理请求 模拟对象测试方法有助于消除其中不必要的依赖性 借助于继承自基本JUnit测试集的MockStrutsTestCase类 StrutsTestCase测试框架提供了对servlet容器的一种模拟实现 这显然方便了容器外测试 因而也相应地加快了单元测试周期 另一方面 另一个测试框架—EasyMock—进一步便利了对协作类的动态模拟(Mock) 这个框架中所提供的模拟能够用更简单的实现来代替真正的类 并且添加了校验逻辑以支持单元测试

 非常清楚 把这两个框架结合在一起是非常有益的—Struts应用程序便可以在非常真实的隔离环境下进行测试 理想情况下 你需要使用下列步骤来实现这样的一个单元测试

  建立MockStrutsTestCase以便模拟servlet容器

  借助于EasyMock来模拟行为所依赖的类

  设置模拟的期望值

  把模拟注入到当前测试的行为中

  继续进行测试和校验

 注意 上面步骤 中所执行的依赖性注入使被测试的Struts行为远离了其真实的协作者而与一个模拟的行为进行交互 为了把通过EasyMock生成的模拟注入到行为中 你需要从测试类内部存取这些行为相应的实例 遗憾的是 这里出现了一种障碍 因为我们无法轻易地从MockStrutsTestCase中实现这样的存取

  三 OOP方案

 那么 你该如何从MockStrutsTestCase中存取行为实例呢?首先 让我们来分析一下MockStrutsTestCase和Struts的控制器组件之间的关系

 图 中展示的关键关系有可能潜在地导致一种解决上面问题的方案

 

 图 此处展示的关系能够建立一种OOP方案

  MockStrutsTestCase中提供了一个public类型的getter方法用于检索ActionServlet

  ActionServlet有一个protected类型的getter方法用于实现RequestProcessor

  RequestProcessor把行为实例存储为一个protected类型的成员

 你是否可以子类化ActionServlet和RequestProcessor从而使MockStrutsTestCase能够存取行为呢?相应的结果调用链看上去应该如下所示

 ?

 

 注意 在你分析完把MockStrutsTestCase链接到Struts行为的调用序列图之后 你就会发现此方法是行不通的

 图 展示了存在于MockStrutsTestCase和Struts组件之间的关键 *** 互

 

 图 存在于MockStrutsTestCase和Struts组件之间的交互

 图 展示的问题涉及到Struts行为创建的时序问题 到行为内部的模拟注入必须在调用MockStrutsTestCase actionPerform()之前发生 然而 此时这些行为还不可用 因为只有在调用actionPerform()后 Requ

 estProcessor才能够创建这些行为实例

 既然你不能很容易地把行为实例传播到MockStrutsTestCase中 那么 为什么不子类化RequestProcessor并重载processActionCreate()方法呢?在这个重载方法中 你可以存取所有的行为实例 这样以来 创建 配置和设置对相应行为实例的一个模拟一下子变得非常直接 因为应该在执行完actionPerform()之后调用MockControl verify()方法 所以 你还需要重载processActionPerform()以进行此校验调用

 这种方案对于测试正规的Struts应用程序是不太适合的 因为即使所有的行为仅与单个模拟进行交互 测试一个行为也有可能要求多个测试方法—每个方法都具有不同的模拟期望 为此 我们建议的方案是 创建不同的RequestProcessor子类 相应于每个子类设置不同的模拟期望 另外 还需要多个Struts配置文件来指定不同的RequestProcessor子类 最终 管理大量的测试将成为一件令人头疼的事情

  四 AOP方案

 因此 我们非常希望 在执行某行为之前能够通过某种方式实现在MockStrutsTestCase中使用该行为的实例 如果你熟悉AOP 那么 你会立即意识到它所提供的简单方案即能直接满足这一要求 注意 这里的关键是定义一个切点 由它负责捕获行为执行连接点 然后通过一个before advice把模拟注入到相应的行为中

 在此 我选择使用AspectJ框架来实现这一方案 当然 其它的例如Spring AOP这样的AOP实现也应该能够良好工作 不过 Spring AOP还需要一个额外的步骤—通过Spring框架中的DelegatingActionProxy类把对Struts行为的管理委托给Spring

 图 展示了基于AOP方案的单元测试示例静态模型

 

 图 基于AOP方案的单元测试示例静态模型

 SimpleAction是一个Struts行为的子类 同时与ActionService进行协作 其中 SimpleActionTest派生于MockStrutsTestCase 用来测试SimpleAction

 SimpleActionTest使用EasyMock创建和建立一个模拟ActionService SimpleActionTest还实现StrutsActionPreExecuteListener接口以便在即将运行 SimpleAction的execute方法时接收通知 作为通知的一部分 SimpleActionTest接收SimpleAction实例以便注入ActionService模拟 由方面类StrutsActionPreExecuteNotifier负责通知任何实现接口的测试类 并且使相应的行为实例可用

 下面的步骤描述了实现StrutsActionPreExecuteNotifier的过程

 ◆首先 由一个切点选择相应的测试方法执行连接点 另一方面 这个测试方法驻留于负责监听该行为的预执行的测试类中 另外 这个切点还会暴露当前执行的测试类对象 pointcut mockStrutsTest(StrutsActionPreExecuteListener actionTest):

 ?

 ◆然后 由第二个切点负责捕获上面的行为执行连接点 通过结合第一个切点 匹配范围被限制到该行为相应的测试方法的调用流程的内部 这种进一步缩小的范围对行为执行(并非通过测试方法激活)起到过滤作用 最终 方面根本不会影响到最后生成的代码 该行为及其相应的测试类实例都是经由切点参数加以暴露的 pointcut strutsActionExecute(Action action StrutsActionPreExecuteListener actionTest):

 ?

 ◆最后 由一个与前一个切点相关联的before advice负责通知测试类(它们担任行为的)并且传递相应于模拟注入的行为实例

 ?

 图 展示了这些类之间的动态交互情形

 

 图 类之间的动态交互

 注意 图中从行为到方面的虚线描述了对行为执行连接点的捕获情况 此时序图与第一个时序图比较 其重要区别正在于行为执行之前发生的三个步骤

  一个切点捕获行为执行连接点(由从SimpleAction指向StrutsActionPreExecuteNotifier的虚线箭头指出)

  方面的before advice负责通知测试类并且把相应的行为实例传递给它

  测试类把模拟对象注入到即将要开始执行的行为实例中

 现在 你可以基于前面概括的五个步骤继续编写行为测试 下面的代码展示了相应于SimpleActionTest的部分代码 步骤已在注释中标出

 使用MockStrutsTestCase和EasyMock进行行为测试的部分代码

 ?

 ?

 在行动及其依赖的服务之间存在四种可能的复合关系

 每个行为依赖于一个服务

 每个行为依赖于多个服务 ?

 多个行为依赖于一个服务 ?

 多个行为依赖于多个服务 ?

 我在此展示的方案能够比较灵活而且相对容易地支持上面所有这四种情形 因为模拟创建 期望值建立以及模拟注入都能够在单个的测试类内实现

 你能够不借助于接口就可以在StrutsActionPreExecuteNotifier内部模拟注入吗?这看起来似乎使得测试类实现更简单一些 然而 实践证明 类似早些时候讨论的OOP方案 编写多个方面以创建不同的模拟对象并建立相应的不同的模拟期望是非常必要的 另外 在单个测试类内本地化模拟的创建与安装(借助于监听技术 这是可能的)将变得更为方便

  五 总结

 对于我们在本文中所讨论的集成问题 有人可能会创造出一套相当不错的OOP方案 然而 构造这种方案很可能需要对Struts和StrutsTestCase有深入的理解才行 并且要付出相当的努力 影响本文中所讨论的两个测试框架(StrutsTestCase和EasyMock)紧密集成的主要障碍在于 在Struts行为实例执行之前很难实现对它的访问 在认识了导致这种障碍的基本原因之后 AOP方案自然地出现在我们面前 不必再强求于基于传统型OOP的那种更复杂的方案 AOP允许我们把我们的方案更为紧密地映射到问题空间

lishixinzhi/Article/program/Ja/ky/201311/28045

Windows设备驱动程序WDF开发的目录

这么简单的也需要上百度么?

看你的电路是怎么画的,有两种方式,一种是LED灯的一端接地另一种是接5V电源,如果接地程序只需要给P1上一次5秒给个高电平,接+5V就是给个低电平。

延时5秒就写个延时程序

程序网上,书上一大把一大把,自己搜一下,结合自己用的单片机(应该是51系列的)晶震

深入浅出windows驱动开发的目录

第1章 Windows 2000和WDM驱动程序 1

1.1 Windows 2000组件概述 1

1.2 Windows 2000中的驱动程序种类 3

1.3 WDM驱动程序特点 4

1.2.1 内核模式驱动程序的设计目标 4

1.3.2 WDM驱动程序模型 7

1.3.3 设备和驱动程序的层次结构 8

1.3.4 中断级别IRQL 9

1.3.5 设备接口 10

第2章 KMDF驱动程序框架 12

2.1 KMDF对象 12

2.1.1 对象概念 12

2.1.2 基本对象 17

2.2 KMDF程序结构 18

2.2.1 DriverEntry例程 19

2.2.2 EvtDriverDeviceAdd例程 22

2.2.3 I/O处理例程 25

2.2.4 即插即用和电源管理例程 30

2.3 CharSample实例 30

第3章 基本对象 32

3.1 WDFREQUEST对象 32

3.1.1 WDFREQUEST对象函数 32

3.1.2 I/O请求基本操作 38

3.2 WDFQUEUE对象 44

3.2.1 WDFQUEUE对象函数 46

3.2.2 队列编程 48

3.3 WDFTIMER对象 50

3.4 WDFDPC对象 52

3.5 WDFWORKITEM对象 53

3.6 WDFMEMORY对象 55

3.7 数据同步访问 56

3.7.1 WDFSPINLOCK对象 57

3.7.2 WDFWAITLOCK对象 58

3.8 字符串操作 58

3.8.1 字符串格式 58

3.8.2 WDFSTRING对象 59

3.8.3 串处理函数 60

3.9 QueueSample实例 61

第4章 KMDF驱动程序编程入门 70

4.1 建立KMDF编程环境 70

4.2 创建KMDF驱动程序 71

4.3 生成KMDF驱动程序 72

4.4 安装KMDF驱动程序 73

4.5 RegSample实例 78

4.5.1 RegSample驱动程序 78

4.5.2 Win32 Console应用程序 92

4.5.3 MFC应用程序 98

4.6 调试说明 103

第5章 KMDF驱动程序和应用程序之间的通信 104

5.1 应用程序对驱动程序的通信 104

5.1.1 打开设备 105

5.1.2 关闭设备 106

5.1.3 DeviceIoControl函数调用 106

5.1.4 ReadFile和WriteFile函数调用 111

5.1.5 IOSample实例 112

5.2 驱动程序对应用程序的通信 116

5.2.1 DeviceIoControl异步完成 116

5.2.2 WIN32通知 117

5.3 驱动程序对应用程序通信实例 119

5.3.1 异步完成实例CancelSample 120

5.3.2 通知实例EventSample 130

第6章 即插即用例程 145

6.1 即插即用简介 145

6.1.1 PnP组件 145

6.1.2 即插即用例程 146

6.1.3 例程的加载和卸载顺序 150

6.2 PnpPowerSample实例 152

第7章 电源管理 160

7.1 电源管理简介 160

7.1.1 系统电源状态与设备电源状态 160

7.1.2 电源管理控制标志位 162

7.1.3 设备的唤醒特征和空闲检测 163

7.2 电源管理编程 163

7.2.1 电源管理基本例程 164

7.2.2 设备唤醒 164

7.2.3 空闲检测 166

7.3 IdleSample实例 168

第8章 KMDF过滤器驱动程序 174

8.1 KMDF过滤器驱动程序的编程 175

8.2 KMDF过滤器驱动程序安装 176

8.3 FilterSample实例 177

第9章 USB设备开发 188

9.1 USB接口概述 188

9.1.1 USB设备的配置、接口和端点 189

9.1.2 USB数据的传输方式 192

9.1.3 USB描述符 199

9.1.4 标准设备请求 207

9.2 USB编程对象 210

9.2.1 WDFUSBDEVICE对象 210

9.2.2 WDFUSBINTERFACE对象 215

9.2.3 WDFUSBPIPE对象 218

9.3 USB编程 222

9.3.1 激活配置与中止配置 222

9.3.2 同步操作 224

9.3.3 异步操作 225

9.4 USBSample实例 227

第10章 PCI设备驱动程序开发 244

10.1 硬件访问 245

10.1.1 I/O访问 245

10.1.2 存储器访问 248

10.1.3 硬件访问编程 251

10.2 中断处理 254

10.2.1 WDFINTERRUPT对象 254

10.2.2 中断处理编程 257

10.3 DMA传输 258

10.3.1 DMA编程对象 258

10.3.2 DMA传输编程 267

10.4 PCISample实例 268

10.5 DMASample实例 279

第11章 UMDF驱动程序编程入门 2

11.1 UMDF编程环境 2

11.2 创建UMDF驱动程序 2

11.3 生成UMDF驱动程序 299

11.4 安装UMDF驱动程序 299

11.5 UMDFSample实例 302

11.5.1 驱动程序 302

11.5.2 Win32 Console应用程序 339

第12章 WinDbg使用介绍 340

12.1 用WinDbg调试KMDF 340

12.1.1 目标机的设置 341

12.1.2 主控机的路径设置 343

12.1.3 建立连接 343

12.1.4 加载符号文件 344

12.1.5 设置断点 345

12.1.6 断点执行 346

12.1.7 下载符号包 347

12.2 用WinDbg调试UMDF 348

12.2.1 路径设置 348

12.2.2 链接进程 348

12.2.3 设置断点 349

12.2.4 使能UMDF加载和初始化代码调试 350

参考文献 351

求助用LabVIEW根据GPIB协议编写程序

向内核世界说一声:hello,我来了。如果你是一个初学者,并对这个世界充满好奇心,请从这一章开始,我们一起打招呼~

第1章 Hello World驱动 1

1.1 从Hello World开始 2

1.1.1 HelloDRIVER 4

1.1.2 代码解释 8

1.1.3 驱动程序的编译和安装 11

1.1.4 查看我们的驱动 14

1.2 虚拟环境 15

1.2.1 使用虚拟环境进行驱动开发 15

1.2.2 使用VMware虚拟机 15

1.2.3 目标机设置 16

1.2.4 Virtual PC虚拟机 18

1.3 小结 19

如何在规范的商业环境中,开发成功而有效的驱动软件?驱网站长马勇(ZnSoft)将向你娓娓道来。你会学到这些内容:建立一个简单而有效的开发、调试环境;64位环境下的内核编程技巧;如何发布你的驱动软件。

第2章 商业驱动开发技术 20

2.1 建立开发调试环境 21

2.1.1 SVN环境 21

2.1.2 创建工程,导入SVN 23

2.1.3 建立符号服务器 25

2.1.4 用符号调试 27

2.2 64位驱动开发技术 34

2.2.1 64位驱动编写技术 35

2.2.2 32位应用程序与64位驱动混合模式 36

2.3 驱动程序的发布与测试 42

2.3.1 驱动程序签名 42

2.3.2 驱动程序测试 46

2.3.3 WHQL 49

2.4 小结 50

WDF是目前最新的驱动编程框架。当很多内核程序员还紧抱WDM的巨大佛脚时,千万要记住,WDF已是大势所趋。本章介绍了WDF最重要的几个概念,并进行了一定程度的深度挖掘。对于WDF框架的三大核心模型:对象模型、模型、PNP/Power模型,本章作了重点讲述。

第3章 WDF概述 51

3.1 主要特点 52

3.2 框架视图 53

3.3 兼容性 55

3.4 对象模型 56

3.4.1 对象和句柄 59

3.4.2 引用计数 60

3.4.3 上下文空间 61

3.4.4 PME接口 67

3.4.5 DDI接口 69

3.4.6 父子关系 76

3.4.7 对象同步 77

3.5 驱动对象和设备对象 78

3.5.1 驱动对象 78

3.5.2 驱动入口DriverEntry 81

3.5.3 设备对象 84

3.5.4 创建设备对象 85

3.5.5 设备栈 86

3.6 IO模型 88

3.6.1 IO目标对象 88

3.6.2 IO目标对象的细节 90

3.6.3 安全的缓冲区 93

3.6.4 内存对象(一) 96

3.6.5 内存对象(二) 98

3.6.6 框架和IO请求 102

3.6.7 更详细的处理流程 103

3.6.8 IO请求参数 105

3.6.9 队列 107

3.6.10 创建IO请求 110

3.7 PNP和电源模型 112

3.8 小结 115

使用WDF框架开发USB驱动,方便且简单。本章首先总体上从硬件和软件两个方面介绍USB相关知识点,包括设备的电气特性、总线结构、USB驱动类型以及类驱动。编程方面,从USB设备初始化、数据操作以及设备控制等几个方面来讲解,透彻并且翔实。

第4章 WDF USB设备驱动开发 116

4.1 USB设备硬件结构 117

4.1.1 主从结构 117

4.1.2 硬件拓扑 118

4.1.3 USB中断 119

4.2 USB软件结构 120

4.2.1 总线驱动 120

4.2.2 系统类驱动 121

4.2.3 功能驱动 122

4.2.4 父驱动与混合设备 122

4.2.5 过滤驱动 125

4.2.6 USB驱动栈、设备栈 125

4.3 内核开发 127

4.3.1 设备驱动 127

4.3.2 入口函数 128

4.3.3 USB描述符 129

4.3.4 描述符介绍 130

4.3.5 汇总举例 133

4.3.6 读取描述符 135

4.3.7 初始化 137

4.3.8 设备初始化函数 138

4.3.9 创建设备对象 141

4.3.10 设备命名、符号链接 143

4.3.11 启动设备 147

4.3.12 创建队列 156

4.3.13 停止设备/反初始化 158

4.4 数据I/O操作 160

4.4.1 USB控制命令 160

4.4.2 构造并发送控制命令 162

4.4.3 读USB中断端口 163

4.4.4 连续读操作 165

4.4.5 数据处理函数 166

4.4.6 中断端口的效率 167

4.4.7 读/写批量端口 168

4.5 设备控制 171

4.5.1 关于I/O Target对象 171

4.5.2 获取USB版本 172

4.5.3 管道重置 174

4.5.4 设备重置 176

4.5.5 管道中止与终止 177

4.6 用户程序 179

4.6.1 内核读/写 179

4.6.2 控制命令 179

4.7 小结 180

1394俗称火线。大伙平时最多接触它的地方大概是内核调试时,借助1394卡进行双机互联。本章首先从硬件方面介绍了1394的知识,它的总线结构很特别,极具可扩性,能非常方便地在各种类型的1394设备之间建立数据链路。内核编程方面,本章重点讲解了数据通信相关知识,分为异步通信和同步通信两种方式,颇为复杂,相对难于掌握,但套路是现成的,变化的东西不多,可以熟能生巧。本章最后介绍了1394双机互联的原理,有兴趣的读者可参考之。

第5章 WDF 1394驱动开发 181

5.1 1394一席谈 182

5.1.1 版本情况 183

5.1.2 电源特性 183

5.1.3 1394卡 183

5.1.4 总线拓扑 184

5.2 发送请求 186

5.2.1 同步方式 187

5.2.2 异步方式 189

5.2.3 对WDM的回忆 191

5.3 总线重置与计数 193

5.3.1 总线重置 193

5.3.2 设置重置回调 193

5.3.3 计数更新 194

5.4 PNP操作 195

5.5 异步通信 196

5.5.1 地址范围 1

5.5.2 异步读 200

5.5.3 异步写 201

5.5.4 异步锁请求 202

5.5.5 数据流 203

5.6 等时通信 204

5.6.1 申请带宽 205

5.6.2 释放带宽 206

5.6.3 等时通道 206

5.6.4 句柄 207

5.6.5 缓冲区挂载 210

5.6.6 缓冲区解挂 211

5.6.7 开始传输 211

5.6.8 停止传输 212

5.6.9 其他等时操作 213

5.7 其他操作 213

5.7.1 设备配置 213

5.7.2 获取控制器信息 214

5.7.3 速度信息 215

5.7.4 厂商自定义命令 216

5.8 安装与测试 216

5.8.1 1394虚拟设备 216

5.8.2 创建虚拟设备 218

5.8.3 示例代码 219

5.8.4 安装与测试 221

5.9 小结 222

内核天生适合于C语言编程,但越来越多的内核项目,规模达到10数万的规模。在这种情况下,人们不由地会将目光投向优雅的C++语言。总体上说,C和C++是至亲好友,内核中使用C++本不应有什么大问题,但有几个暗礁潜伏已久,不小心的程序员,你可千万不要触礁。

第6章 内核驱动C++编程 223

6.1 驱动中的类 224

6.1.1 一个简单的例子 224

6.1.2 new/delete 225

6.1.3 extern C 227

6.1.4 全局/静态变量 228

6.1.5 栈的忧虑 230

6.2 类封装的驱动程序 233

6.2.1 寻找合适的存储所 233

6.2.2 类方法与函数 235

6.2.3 KMDF驱动实现 236

6.2.4 WDM驱动实现 237

6.3 多态 238

6.3.1 基类、子类 238

6.3.2 实现多态 239

6.3.3 测试 241

6.4 小结 241

使用WDF框架编写的驱动程序,在测试和调试的时候,有特殊的工具。本章介绍了目前所知的三个,它们分别是:Windbg扩展调试命令、WDFTester测试工具、WDFVerifier测试工具。本章将以示例方式,介绍这些工具的使用。

第7章 WDF驱动测试 242

7.1 WDF错误 243

7.1.1 实例分析 245

7.1.2 USB错误 246

7.2 WDF扩展调试命令 247

7.3 WDFTester 254

7.3.1 WDFFiTester 254

7.3.2 使用 256

7.3.3 WDFCallTracer 260

7.4 WDFVerifier 263

7.4.1 识别KMDF驱动 263

7.4.2 使用与介绍 265

7.5 小结 266

SoftIce渐行渐远之后,Windbg成为内核调试的第一利器。使用Windbg的最大难点是命令繁多,参数复杂。本章以总结归纳的形式,介绍了作者在工作中经常用到的几大类调试命令,并以实例形式一一介绍。作者根据个人经验所作的分类,未能全备,但能够保证的是,所有实例翔实而可靠,可以作为可信的参考。

第8章 调试命令详解 267

8.1 概述 268

8.1.1 寻求帮助 269

8.1.2 DML语言 270

8.1.3 基本信息 271

8.1.4 基本设置 272

8.1.5 格式化显示 273

8.1.6 开始调试 273

8.2 符号与源码 276

8.2.1 模块列表 277

8.2.2 模块信息 279

8.2.3 符号路径 280

8.2.4 符号加载 283

8.2.5 符号搜索 285

8.2.6 源码命令 287

8.3 进程与线程 289

8.3.1 进程命令 289

8.3.2 线程命令 292

8.3.3 异常与 296

8.3.4 局部变量 300

8.3.5 显示类型 301

8.4 断点 301

8.4.1 软件断点 301

8.4.2 硬件断点 303

8.4.3 其他操作 303

8.5 内存命令 304

8.5.1 查看内存 304

8.5.2 内存信息 307

8.5.3 其他命令 311

8.6 小结 312

相信大多数人在学习内核开发的时候,都问过这样一个问题:内核驱动怎么向用户程序发送消息,或者如何调用Win32函数。用户程序和内核同步,是一个基本而重要的知识,本章介绍了三种主要的实现方式。至于内核是否可以调用Win32函数,读一读本章开篇的话,你就有答案了。

第9章 内核同步 313

9.1 关于内核同步 314

9.2 内核同步 316

9.2.1 原理 316

9.2.2 用户程序 318

9.2.3 内核实现 319

9.3 IRP同步 320

9.3.1 用户程序 321

9.3.2 内核实现 323

9.4 WMI同步 325

9.5 数据缓冲区同步 326

9.6 反向调用 328

9.7 小结 330

微软最新的音编程框架即AVStream框架,不管从什么方面来说,音编程都是一个很小众的领域。AVStream框架极其复杂,个人看法是掌握的难度超过了WDF。本章介绍了AVStream框架的各种基本知识点,并以实例讲解一个内核音频过滤器在系统中是如何工作的。

第10章 音频驱动开发 331

10.1 简介 332

10.1.1 音频模块架构 332

10.1.2 系统中的音频设备 334

10.2 AVStream对象 338

10.2.1 设备对象 339

10.2.2 Filter工厂和Filter对象 340

10.2.3 Pin工厂和Pin对象 342

10.2.4 Node对象与Connection结构体 343

10.3 AVStream描述符 346

10.3.1 描述符简介 346

10.3.2 描述符示例 347

10.3.3 分发函数表 349

10.3.4 自控表 349

10.3.5 自控表示例 351

10.4 代码讲解 355

10.4.1 入口函数 355

10.4.2 设备分发函数 357

10.4.3 Filter与Pin分发函数 358

10.4.4 创建和删除 359

10.4.5 数据处理 360

10.4.6 数据格式 362

10.5 自控表函数 364

10.5.1 函数 364

10.5.2 属性函数 366

10.5.3 方法函数 367

10.5.4 用户接口 367

10.6 硬件操作 370

10.6.1 数据DMA 370

10.6.2 AVStream中的DMA实现 371

10.6.3 谈谈ISR 374

10.7 安装与测试 376

10.7.1 安装 376

10.7.2 测试工具 376

10.8 小结 379

ASIO音频驱动具有两个非常亮眼的优点:低延迟、多通道。低延迟能够达到几毫秒,使得最灵敏的耳朵也难也察觉;多通道则让通常的双声道、6.1声道等一齐歇菜,而可以很轻松地让多达十几、几十个声道同时工作,在进行高级音频编辑时,这非常重要。

第11章 ASIO虚拟声卡 380

11.1 引言 381

11.2 关于ASIO 383

11.3 ASIO用户驱动 384

11.3.1 COM接口 384

11.3.2 安装与卸载 386

11.3.3 IASIO接口 387

11.3.4 技术核心 390

11.3.5 计算延迟 392

11.4 内核驱动实现 393

11.4.1 同步 393

11.4.2 原理 393

11.4.3 实现 396

11.5 ASIO音频软件 396

11.6 小结 3

从本章开始的三章内容,讲的都是“驱动安装”这个话题。在本章中,介绍了系统中和驱动安装有关的各种系统模块。读者通过阅读本章后,至少能够掌握这两个基本知识:系统如何识别一个旧设备,并为它加载合适的驱动文件;系统如何发现一个新设备,并完成驱动安装。

第12章 设备驱动安装入门 399

12.1 基础知识预介 400

12.1.1 设备类型 400

12.1.2 设备实例ID 401

12.1.3 驱动加载和安装 403

12.2 安装模块 404

12.2.1 内核PNP管理器 405

12.2.2 用户PNP管理器 406

12.2.3 安装接口函数(Setup API) 408

12.2.4 配置管理器接口(CfgMgr API) 410

12.2.5 类安装器(Class Installers) 410

12.2.6 类协安装器(Class Co-Installers) 410

12.2.7 设备协安装器(Device Co-Installers) 411

12.2.8 驱动包(Driver Package) 412

12.2.9 驱动仓库(Driver Store) 413

12.2.10 设备管理器(Device Manager) 414

12.2.11 安装程序 415

12.2.12 新设备向导 416

12.2.13 添加硬件向导 416

12.2.14 驱动安装器(Driver Installer) 416

12.3 重要问题 417

12.3.1 寻找和选择 417

12.3.2 32位与64位系统兼容 418

12.3.3 系统重启 419

12.4 安装模式 420

12.4.1 示例1:客户端模式 421

12.4.2 示例2:服务器模式 423

12.5 安装器编程 424

12.5.1 DIF码 424

12.5.2 处理流程 427

12.5.3 工程示例 429

12.5.4 注册 430

12.6 小结 431

INF文件即驱动程序的“安装文件”,它包含了各种与驱动安装有关的指令信息。通过INF文件,系统知道如何处理驱动包中的各个文件,并在系统注册表中做出准确记录。本章主要从指令和域,这两个方面进行讲解。

第13章 深入解析INF文件 432

13.1 概述 433

13.1.1 域 433

13.1.2 指令 434

13.1.3 多系统 435

13.2 注册表指令 436

13.2.1 缩写根键 436

13.2.2 软件键 437

13.2.3 硬件键 437

13.2.4 AddReg 438

13.2.5 DelReg 440

13.2.6 BitReg 441

13.3 文件操作指令 441

13.3.1 CopyFiles 441

13.3.2 DelFiles 443

13.3.3 RenFiles 443

13.4 服务指令 444

13.4.1 AddService 444

13.4.2 DelService 445

13.5 基本域 446

13.5.1 版本域 446

13.5.2 文件域 447

13.5.3 默认安装域 451

13.5.4 控制域 454

13.5.5 字符串域 457

13.6 设备类安装域 458

13.6.1 主域 459

13.6.2 服务子域 461

13.7 接口类安装域 461

13.8 厂商/产品域 462

13.8.1 厂商域 463

13.8.2 产品域 464

13.9 设备安装域 464

13.9.1 硬件子域 466

13.9.2 协安装器子域 467

13.9.3 接口子域 468

13.9.4 厂商默认配置子域 469

13.9.5 逻辑优先配置子域 470

13.10 ChkInf介绍 471

13.11 小结 472

驱动安装程序让你的驱动软件显得更加专业,所以,放弃手动安装驱动的做法吧,你的驱动将显得更靓。本章的示例软件MyDrvInst,可以作为读者设计更漂亮的安装软件的开始。

第14章 设计驱动安装程序 473

14.1 驱动包 474

14.1.1 安装方式 474

14.1.2 安装驱动包 475

14.1.3 卸载驱动包 476

14.2 驱动更新 477

14.2.1 设备已连接 477

14.2.2 设备未连接 478

14.2.3 枚举系统设备 481

14.3 分析INF文件 484

14.3.1 函数介绍 484

14.3.2 打印设备ID 486

14.4 MyDrvInst介绍 487

14.5 制作软件安装包 490

14.5.1 视图介绍 490

14.5.2 我们的工程 492

14.5.3 编译执行 493

14.6 小结 494

附录A CY001 USB开发板 495

附录B VisualKD + VMWare实现单机内核调试 501

JDBC使用步骤过程

网上有,://sine.ni/s/utf8/niid_web_display.model_page?p_model_id=166 这个是泰克3000系列的驱动,你可以点Browse Drivers输入实际型号搜索,比如TDS 2014B。

自己写的话,是根据手动操作的流程,在附带说明书上查找对应命令,利用GPIB write给示波器下命令,用GPIB read读取返回值

JDBC操作数据库的基本步骤:

1、加载JDBC驱动程序。

在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Ja虚拟机), 这通过ja.lang.Class类的静态方法forName(String className)实现。成功加载后,会将Driver类的实例注册到DriverManager类中。

2、提供JDBC连接的URL。

连接URL定义了连接数据库时的协议、子协议、数据源标识。

书写形式:协议:子协议:数据源标识。

3、创建数据库的连接。

要连接数据库,需要向ja.sql.DriverManager请求并获得Connection对象, 该对象就代表一个数据库的连接。

使用DriverManager的getConnectin(String url , String username , String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和 密码来获得。

4、创建一个Statement,要执行SQL语句,必须获得ja.sql.Statement实例。

Statement实例分为以下3 种类型:

(1)执行静态SQL语句。通常通过Statement实例实现。

(2)执行动态SQL语句。通常通过PreparedStatement实例实现。

(3)执行数据库存储过程。通常通过CallableStatement实例实现。

5、执行SQL语句。

Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate 和execute

6、处理两种情况的结果。

(1)执行更新返回的是本次操作影响到的记录数。

(2)执行查询返回的结果是一个ResultSet对象。

ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些 行中数据的访问。

使用结果集(ResultSet)对象的访问方法获取数据。

7、关闭JDBC对象(关闭结果集-->关闭数据库操作对象-->关闭连接)。

操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC,关闭顺序和声 明顺序相反:

(1)关闭记录集。

(2)关闭声明。

(3)关闭连接对象。

扩展资料:

一、JDBC(Ja DataBase Connectivity,ja数据库连接)

是一种用于执行SQL语句的Ja API,可以为多种关系数据库提供统一访问,它由一组用Ja语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。

二、特性

Ja 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Ja应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。

三、用途

简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。

百度百科-JDBC

热门文章