驱动程序开发实例_驱动程序开发实例分析
很高兴能够参与这个驱动程序开发实例问题集合的解答工作。我将根据自己的知识和经验,为每个问题提供准确而有用的回答,并尽量满足大家的需求。
1.J2EE使用JDBC执行SQL语句需要哪个对象
2.JDBC使用步骤过程
3.Windows设备驱动程序WDF开发的本书内容
4.如何利用VFW在Delphi中开发视频捕获程序
J2EE使用JDBC执行SQL语句需要哪个对象
JDBC 入门 -- 建立联接
你需要做的第一事情是你与想要使用的 DBMS 建立一个连接。这包含 2 个步骤:装载驱动程序并建立连接。
装载驱动程序
装载驱动程序只需要非常简单的一行代码。例如,你想要使用 JDBC-ODBC 桥驱动程序, 可以用下列代码装载它:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
你的驱动程序文档将告诉你应该使用的类名。例如, 如果类名是 jdbc.DriverXYZ ,你将用代码以下的代码装载驱动程序:
Class.forName("jdbc.DriverXYZ");
你不需要创建一个驱动程序类的实例并且用 DriverManager 登记它,因为调用 Class.forName 将自动将加载驱动程序类。如果你曾自己创建实例,你将创建一个不必要的副本,但它不会带来什么坏处。
加载 Driver 类后,它们即可用来与数据库建立连接。
建立连接
第二步就是用适当的驱动程序类与 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驱动程序,文档将告诉你该使用什么 subprotocol, 就是在 JDBC URL 中放在 jdbc 后面的部分。例如, 如果驱动程序开发者注册了 acme 作为 subprotocol, JDBC URL 的第一和第二部分将是 jdbc:acme。驱动程序文档也会告诉你余下 JDBC URL 的格式。JDBC URL 最后一部分提供了定位数据库的信息。
如果你装载的驱动程序识别了提供给 DriverManager.getConnection 的 JDBC URL ,那个驱动程序将根据 JDBC URL 建立一个到指定 DBMS 的连接。正如名称所示,DriverManager 类在幕后为你管理建立连接的所有细节。除非你是正在写驱动程序,你可能无需使用此类的其它任何方法,一般程序员需要在此类中直接使用的唯一方法是 DriverManager.getConnection。
DriverManager.getConnection 方法返回一个打开的连接,你可以使用此连接创建 JDBC statements 并发送 SQL 语句到数据库。在前面的例子里,con 对象是一个打开的连接,并且我们要在以后的例子里使用它。
建议你在baidu所搜你所用的数据库以及其JDBC(例如mysql jdbc)
JDBC使用步骤过程
第1章表单、窗口与导航条设计1.1下拉列表
实例001把数据库中的记录显示到下拉列表中
实例002将数组中的数据添加到下拉列表中
实例003级联菜单
实例004修改数据时下拉列表的默认值为数据库中原数据信息
实例005可以输入文字的下拉列表
实例006应用下拉列表选择所要联机的网站
实例007根据下拉列表的值显示不同控件
1.2动态添加表单元素
实例008根据数据表结构自动生成数据录入页面
实例009投票信息一次性设置
1.3文本框组件的应用
实例010自动计算金额
实例011设置文本框的只读属性
实例012让您的密码域更安全
实例013限制多行文本域输入的字符个数
1.4单选按钮组
实例014不提交表单获取单选按钮的值
实例015选中单选按钮后显示其他表单元素
1.5表单的应用
实例016防止表单在网站外部提交
实例017带记忆功能的表单
1.6弹出窗口控制
实例018打开新窗口显示广告信息
实例019自动关闭的广告窗口
实例020弹出窗口居中显示
实例021打开新窗口显示详细信息
实例022弹出窗口的Cookie控制
实例023为弹出的窗口加入关闭按钮
实例024关闭弹出窗口时刷新父窗口
实例025应用window.close()关闭窗口
1.7弹出网页对话框
实例026弹出网页(模式)对话框
实例027弹出全屏显示的网页(模式)对话框
实例028网页拾色器
1.8无边框窗口
实例029全屏显示无边框有滚动条窗口
实例030应用JavaScript实现指定尺寸的无边框窗口
实例031应用CSS+DIV实现无边框窗口
1.9水平导航条应用
实例032带图标的文字导航条
实例033flash导航条
实例034按钮导航条
实例035导航条的动画效果
实例036不用实现质感导航条
1.10下拉菜单式导航条
实例037二级导航菜单
实例038半透明背景的下拉菜单
实例039弹出式下拉菜单
实例040展开式导航条
1.11侧导航条设计
实例041导航按钮
实例042收缩式导航菜单
实例043树状导航菜单
第2章代码封装技术
2.1数据库操作函数
实例044通用数据库连接函数
实例045测试数据库连接
2.2窗口与对话框
实例046弹出提示对话框并重定向网页
实例047打开指定大小的新窗口并居中显示
2.3字符串处理
实例048自动获得汉字的拼音简码
实例049转换输入文本中的回车和空格
实例050小写金额转换为大写金额
实例051判断字符串是否以指定字符开头
实例052把一个长数字分位显示
实例053检查字符是否是英文字母
实例054计算字符串的实际长度
实例055将数字字符串格式化为指定长度
实例056将RGB格式的颜色值转换为十六进制格式
实例057将IP地址转换为对应的数值
实例058字符串转换成数组
实例059截取字符串
实例060ASP生成条形码
实例061过滤输入字符串中的危险符号
2.4数据验证
实例062验证输入的日期格式是否正确
实例063检查表单元素是否为空
实例064服务器端验证E-mail是否正确
实例065客户端验证E-mail是否正确
实例066通过正则表达式验证电话号码
实例067应用正则表达式验证车牌号码
实例068验证输入的字符串是否为汉字
实例069验证身份证号码
实例070客户端验证用户名和密码
实例071验证网址是否合法
实例072验证数量和金额
实例073限制输入字符串的长度
2.5身份验证
实例074用户登录模块
实例075带状态识别的用户登录模块
2.6日期与时间
实例076显示长日期格式的系统日期
实例077实时显示系统时间
实例078倒计时
实例079特殊日期提示
2.7随机函数
实例080随机产生指定位数的验证码
实例081生成随机字符串
第3章数据库技术
3.1连接Access数据库
实例082通过DSN连接数据库
实例083通过ADO连接数据库
实例084通过OLEDB连接数据库
实例085连接加密的Access数据库
3.2连接SQLServer数据库
实例086通过非DSN连接数据库
实例087通过OLEDB连接数据库
实例088通过DSN连接数据库
3.3数据插入
实例089单条数据录入
实例090批量数据录入
实例091插入系统日志信息
3.4立即获取插入记录的自动编号
实例092获取SQLServer数据库中插入记录的自动编号
实例093获取Access数据库中插入记录的自动编号
3.5数据更新
实例094更新指定记录
实例095批量更新
实例096商品价格调整
3.6数据删除
实例097删除指定记录
实例098批量删除数据
实例099删除数据前给予提示
实例100记录从数据库里删除的记录数
3.7分页显示数据信息
实例101分页显示
实例102查询结果分页显示
实例103转到指定页的分页
实例104具有页码跳转功能的分页
实例105分栏显示
实例106分类、分栏显示
实例107统计记录集中数据的数量
实例108对超长文本数据进行分页显示
3.8密码管理
实例109修改密码
实例110找回密码
3.9锁定记录
实例111在线售票
实例112自动生成编号
3.10在ASP中应用事务
实例113事务在插入多表数据中的应用
实例114事务在添加留言信息中的应用
实例115事务在删除数据中的应用
3.11使用代码创建数据库、数据表和字段
实例116动态创建Access数据库
实例117动态创建SQL数据库
实例118动态创建SQL数据表和字段
3.12枚举数据库中的数据表
实例119列举SQLServer数据库中的数据表
实例120列举Access数据库中的数据表
3.13查看及修改数据表结构
实例121查看数据表结构
实例122在线维护投票数据库
3.14在线删除表或索引
实例123在线删除指定的一个数据表
实例124在线删除多个指定的数据表
实例125在线删除索引
3.15清除部分或全部数据表中的数据
实例126清空指定数据表中的所有数据
实例127清空指定数据表中的全部记录并插入指定ID的新记录
实例128批量清空数据表
3.16生成和恢复SQL数据库脚本
实例129生成SQL数据库脚本
实例130恢复SQL数据库脚本
3.17SQLServer数据库备份与恢复
实例131SQLServer数据备份
实例132SQLServer数据恢复
3.18Access数据库备份与恢复
实例133Access数据备份
实例134Access数据恢复
实例135Access数据压缩
3.19其他
实例136不刷新页面筛选数据库中的数据
实例137动态附加数据库
实例138连接Oracle数据库
第4章SQL查询相关技术
4.1查询常量
实例139查询数值型数据
实例140查询字符串
实例141查询日期型数据
实例142查询逻辑型数据
实例143查询非空数据
4.2查询控件
实例144查询指定控件内字符串
实例145查询指定控件内数据
实例146查询日期控件内数据
实例147控件作为字段、操作符和内容进行查询
4.3查询变量
实例148利用变量查询字符串数据
实例149利用变量查询数值型数据
4.4查询名列前茅或垫底者
实例150查询前10名数据
实例151查询后10名数据
实例152取出数据统计结果前10名数据
4.5周期、日期查询
实例153查询指定ACCESS数据库中的日期型数据
实例154查询指定SQLServer数据库中的日期型数据
实例155查询指定时间段的数据
实例156按月查询统计数据
4.6大小比较、逻辑查询、重复
实例157查询大于指定条件的数据
实例158查询时不显示重复记录
实例159NOT与谓词进行组合条件的查询
实例160列出数据中的重复记录和记录条数
4.7排序、分组统计
实例161对数据进行降序查询
实例162对数据进行多条件排序
实例163对统计结果进行排序
实例164单列数据分组统计
实例165多列数据分组统计
实例166多表分组统计
实例167使用COMPUTER和COMPUTERBY
4.8聚集函数
实例168利用聚集函数SUM对学生成绩进行汇总
实例169利用聚集函数AVG求某班学生的平均成绩
实例170利用聚集函数MIN求销售额、利润最少的商品
实例171利用聚集函数MAX求月销售额完成最多的销售记录
实例172利用聚集函数COUNT求日销售额大于某值的记录数
实例173利用聚集函数First或Last求数据表中第一条或最后一条记录
4.9多表查询
实例174利用from子句进行多表查询
实例175使用表的别名
实例176合并多个结果集
4.10嵌套查询
实例177简单的嵌套查询
实例178复杂的嵌套查询
实例179嵌套查询在查询统计中的应用
4.11子查询
实例180用子查询作派生的表
实例181用子查询作表达式
实例182用子查询关联数据
4.12联合语句
实例183多表联合查询
实例184对联合查询后的结果进行排序
实例185条件联合语句
4.13内连接查询
实例186简单内连接查询
实例187复杂内连接查询
实例188选择一个表中与另一个表中的行相关的所有行
4.14外连接查询
实例189使用外连接进行多表联合查询
实例190leftouterjoin查询
实例191rightouterjoin查询
4.15利用IN进行查询
实例192利用in或notin语句限定范围
实例193用IN查询表中的记录信息
实例194由IN引入的关联子查询
4.16交叉表查询
实例195利用transform分析数据
实例196利用transform动态分析数据
4.17函数查询
实例197在查询语句中使用格式化函数格式条件
实例198在查询中使用字符串函数
实例199在查询中使用日期函数
4.18HAVING语句应用
实例200利用having语句过滤分组数据
4.19更新数据
实例201更新单条数据
实例202批量修改数据
实例203将指定字段数据为空的记录添上数据
4.20删除数据
实例204删除单条数据
实例205删除指定字段数据为空的记录
第5章视图、存储过程和触发器的应用
5.1视图的应用
实例206创建视图
实例207在ASP中应用视图
实例208获取数据库中的全部用户视图
实例209修改视图
实例210删除视图
5.2在ASP中使用存储过程
实例211创建存储过程
实例212应用存储过程实现登录身份验证
实例213应用存储过程添加数据
实例214应用存储过程实现数据分页
实例215获取数据库中全部的存储过程
实例216修改存储过程
实例217删除存储过程
5.3在ASP中使用SQLServer触发器
实例218创建触发器
实例219应用触发器自动插入回复记录
实例220获取数据库中的触发器
实例221应用触发器添加数据
实例222应用触发器修改数据
实例223应用触发器删除数据
第6章文件管理
6.1文件上传
实例224单一文件上传到数据库
实例225将文件与表单数据一同上传到数据库
实例226使用组件上传文件到数据库
实例227上传文件到服务器
实例228使用组件上传文件到服务器
实例229限制上传文件的大小
6.2文件下载
实例230应用Stream对象实现文件下载
实例231获取下载文件所需时间
6.3对文件的基本操作
实例232对文件的创建、删除、移动、复制的操作
实例233对文件名称的修改
6.4文件操控
实例234从文本文件中读取注册服务条款
实例235应用文本文件保存访客人数的计数器
实例236判断文件是否被改动
实例237远程批量重命名文件
实例238通过文本文件向数据库文件中传递数据
实例239用ASP生成HTML
6.5对文件夹的操作
实例240对文件夹创建、删除、移动、复制的操作
实例241对文件夹名称的修改
6.6遍历文件
实例242遍历指定目录下的所有文件
实例243遍历指定驱动器
实例244获取驱动器信息
6.7其他
实例245获取文件信息
实例246读取注册表信息
实例247读取驱动器信息
第7章图形与多媒体
7.1头像选择
实例248通过下拉列表选择头像
实例249从网页对话框中选择头像
7.2上传
实例250将文件保存到数据表
实例251限制上传的格式
7.3显示数据表中的二进制
实例252显示数据表中的单个文件
实例253连续显示数据表中的
实例254按实际大小显示
7.4控制、显示特效
实例255通过滑动鼠标放大或缩小
实例256显示随机图像
实例257如何实现的动态翻动的效果
实例258播放
实例259浮动广告
实例260投票结果柱形图显示
实例261获取页面中图像的实际尺寸
7.5插入Flash动画
实例262插入Flash动画
实例263插入背景透明的Flash动画
7.6在线播放与下载
实例264在线点播
实例265MP3文件下载
实例266自制视频播放器
实例267带记忆的在线影片欣赏
第8章在线统计
8.1网站计数器
实例268通过Application对象实现网站计数器
实例269网站图形计数器
实例270记录用户IP地址的计数器
实例271只对新用户计数的计数器
8.2统计用户停留时间
实例272统计用户在某一页停留的时间
实例273统计用户在站点停留的时间
8.3在线统计
实例274判断用户是否在线
实例275实时统计在线人数
8.4统计网站访问量
实例276统计日访问量
实例277利用柱形图统计分析网站访问量
第9章ActiveX组件
9.1广告轮显组件
实例278制作旗帜广告条
实例279随机广告
9.2计数器组件
实例280图形计数器
实例281幸运有奖
实例282自动生成Web导航链接(contentlinking组件实现)
9.3BrowserCapabilities组件
实例283显示浏览器信息
实例284根据获取的浏览器名称及版本显示不同的页面
9.4注册DLL或OCX组件
实例285本机注册
实例286远程注册DLL组件
9.5图表分析组件
实例287获取情报曲线分析图
实例288年销售额及利润柱形图分析
实例289年销售额及利润折线图分析
9.6VB订制组件
实例290文件上传组件
实例291Ping组件
9.7调用Delphi编写的OCX组件
实例292显示系统时钟组件
实例293自制媒体播放器组件
9.8日历组件
实例294调用MicrosoftDateandTimePicker组件
实例295调用Delphi编写的日历组件
第10章E-mail短信
10.1发送邮件
实例296利用E-mail发送邮件
实例297邮件群发
实例298带附件的邮件发送程序
实例299利用AspEmail组件发送邮件
实例300利用MicrosoftOutLook发送邮件
10.2构建邮件服务器
实例301利用CDONTS组件发送邮件
实例302接收邮件
第11章报表与打印
11.1Web打印
实例303利用JavaScript调用IE自身的打印功能实现打印
实例304利用WebBrowse打印
11.2利用Word打印报表
实例305将页面中的客户列表导出到Word并打印
实例306利用Word自动打印指定格式的会议记录
11.3利用Excel打印报表
实例307利用Excel打印学生信息报表
实例308将web页面中的数据导出到Excel并自动打印
11.4打印库存报表
实例309打印库存明细表
实例310打印库存盘点报表
实例311打印库存汇总报表
实例312打印指定条件的库存报表
11.5套打邮寄产品单
实例313打印汇款单
实例314打印快递单
实例315打印信封
11.6利用CSS样式打印
实例316利用CSS样式打印页面中的指定内容
实例317利用CSS样式实现分页打印
第12章应用与控制
12.1调用Word
实例318将表格数据保存到Word
实例319将查询结果保存到Word
12.2在ASP中访问Excel
实例320通过ADO访问Excel
实例321直接访问Excel
12.3导出数据到Excel
实例322将table数据导出到Excel
实例323将查询结果导出到Excel
12.4导出SQLServer数据
实例324将数据导出到Access数据库
实例325将数据导出到Excel
12.5ASP中压缩与解压缩RAR文件
实例326ASP中压缩RAR文件
实例327ASP中解压缩RAR文件
12.6其他
实例328在ASP中调用PowerPoint
实例329在ASP中编写并调用类
第13章Ajax技术
13.1ASP操作XML数据
实例330向XML文件中动态添加数据
实例331读取指定XML文件中的数据
实例332分页显示XML文件中的数据
13.2无刷新技术应用
实例333不刷新页面查询数据库中的数据
实例334实时验证用户注册信息
实例335XML留言板
实例336无刷新广告轮显
第14章安全技术
14.1用户登录
实例337用户安全登录
实例338带验证码的用户登录模块
实例339分级用户登录
实例340如果未登录浏览某页,强制跳到登录页面
14.2权限
实例341测试管理员级别
实例342权限不够弹出的对话框
14.3获取客户端信息
实例343确定对方的IP地址
实例344获取客户端TCP/IP端口的方法
14.4禁止用户复制网页内容及保护源码
实例345禁止用户复制网页内容(方法一)
实例346禁止用户复制网页内容(方法二)
实例347禁止网页被另存为
实例348防止网页被盗链
实例349使用ScriptEncoder加密工具加密
实例350将ASP文件转换成HTML文件
14.5数据加密
实例351对登录密码进行加密
实例352应用变换法对系统日志信息加密
实例353应用数字加密算法对用户密码加密
14.6Access数据库安全
实例354防止Access数据库被下载
实例355设置数据库密码
14.7防止SQL注入
实例356替换输入字符串中的危险字符
实例357禁止用户输入字符串中的危险字符
实例358防止表单被重复提交
14.8禁止用户刷新屏幕
实例359屏蔽IE主菜单
实例360屏蔽键盘相关事件
实例361屏蔽鼠标右键
第15章建站与程序调试
15.1配置IIS服务器
实例362在Windows2000Server中配置IIS5.0
实例363在WindowsXP+IIS中配置IIS
实例364在Windows2003Server中配置IIS
15.2配置数据库服务器需要注意的事项
实例365SQLServer数据库注意事项
实例366Access数据库不能更新
15.3程序调试与错误处理
实例367应用MicrosoftScriptDebugger调试程序
实例368解决SQLServer中用户登录失败
实例369解决SQLServer语句出现的错误
实例370解决“没有权限”错误
实例371截获系统错误并给出友好提示
实例372常用错误代码一览
15.4服务器安全设置
实例373设置和管理账户
实例374windows2003安装的安全设置
实例375Windows2003远程管理WEB站点
实例376Windows安全设置
实例377配置IIS服务
实例378管理服务器IIS用户
15.5其他
实例379FTP服务器
实例380在IIS中建立WAP服务器
实例381Asp配置虚拟目录
第16章网站设计与网页配色
16.1企业网站
实例382电脑产品
实例383软件产品
实例384汽车销售
实例385物流
实例386宾馆酒店
实例387工业产品
16.2大型门户类网站
实例388综合性门户
实例389搜索引擎
实例390垂直门户
16.3机构类网站
实例391政务
实例392市委党校
实例393银行
16.4教育类网站
实例394院校
实例395招生
实例396科研
实例397培训学校
实例398考试
16.5电子商务类
实例399图书
实例400购物
16.6生活资讯类
实例401电信
实例402家居
实例403中介
实例404房地产
16.7其他
实例405个人主页
实例406游戏
实例407**
实例408美食
第17章行业应用(综合应用)
17.1用户注册
实例409一般用户注册
实例410带检测用户名的用户注册
实例411分步用户注册
17.2留言本
实例412简易留言本
实例413留言本(留言分类)
实例414留言本(版主回复)
17.3在线投票系统
实例415网上投票系统(限制多次投票)
实例416网上投票系统(一个IP一月只能投票一次)
17.4论坛
实例417查看帖子信息
实例418发表主题信息
实例419回复主题信息
实例420删除主题及回复信息
实例421安全退出
17.5购物车
实例422添加至购物车
实例423查看购物车
实例424从购物车中移去指定商品
实例425修改商品购买数量
实例426清空购物车
实例427收银台结账
17.6万年历
实例428简易万年历
实例429带有备忘录的万年历
17.7聊天室
实例430Application形式的聊天室
实例431数据库形式的聊天室(10分钟不说话用户下线)
实例432聊天室(私聊)
17.8搜索
实例433一般搜索
实例434高级搜索
实例435常用搜索
技术要点对应实例位置
……
Windows设备驱动程序WDF开发的本书内容
JDBC操作数据库的基本步骤:1、加载JDBC驱动程序。
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String className)实现。成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL。
连接URL定义了连接数据库时的协议、子协议、数据源标识。
书写形式:协议:子协议:数据源标识。
3、创建数据库的连接。
要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象, 该对象就代表一个数据库的连接。
使用DriverManager的getConnectin(String url , String username , String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和 密码来获得。
4、创建一个Statement,要执行SQL语句,必须获得java.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(Java DataBase Connectivity,java数据库连接)
是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。
二、特性
Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。
三、用途
简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。
百度百科-JDBC
如何利用VFW在Delphi中开发视频捕获程序
本书主要讨论KMDF,KMDF是WDM的继续,可以把WDM驱动程序转换为KMDF驱动程序。还对UMDF设备驱动程序作了编程入门介绍。过去,我研究过如何用DriverStudio开发工具开发Windows下的WDM设备驱动程序,承蒙电子工业出版社的厚爱,出版了《Windows 2000/XP WDM设备驱动程序开发》一书。
WDF的简单化编程,导致DriverStudio退出了Windows设备驱动程序的开发,将DriverStudio定格在3.2版本。
从形式上看,KMDF的对象和DriverStudio的类,具有相似的地方。本书的内容安排和《Windows 2000/XP WDM设备驱动程序开发》的基本一致,具体安排如下:
章 名 主 要 内 容
第1章 Windows 2000和WDM驱动程序 KMDF是WDM的继续,KMDF构建在WDM之上。对于一些Windows驱动程序的基本概念,初学者仍需要了解,如Windows 2000中的组件、驱动程序种类,以及WDM驱动程序特点等
第2章 KMDF驱动程序框架 KMDF驱动程序框架由对象和事件回调例程构成。KMDF框架中所有的事物都由对象来表示,各种事件处理都由事件回调例程来完成。学习KMDF编程,主要是学习KMDF的各种对象、对象函数和事件回调例程的编程
第3章 基本对象 KMDF提供了许多对象,本章只介绍一些基本的对象,如WDFREQUEST对象、WDFQUEUE对象等,还介绍了数据同步访问、字符串操作和QueueSample实例
第4章 KMDF驱动程序编程入门 介绍Windows Vista下的KMDF驱动程序编程入门,包括KMDF驱动程序编程环境的建立,KMDF的创建、生成及安装过程,以及Win32 Console和MFC两种应用程序的编程
第5章 KMDF驱动程序和应用程序之间的通信 介绍应用程序与KMDF之间的通信,包括应用程序对KMDF的通信,以及KMDF对应用程序的通信
第6章 即插即用例程 主要介绍PnP组件、即插即用例程的加载和卸载顺序及PnpPowerSample实例等
第7章 电源管理 主要介绍系统电源状态与设备电源状态、电源管理控制标志位、设备的唤醒特征和空闲检测、电源管理编程及IdleSample实例等
第8章 KMDF过滤器驱动程序 描述如何写一个过滤器驱动程序,该驱动程序可位于功能驱动程序的上面或下面,它通过过滤流经它的IRP来修改设备的行为
第9章 USB设备开发 主要介绍USB设备的配置/接口/端点、USB数据的传输方式、USB描述符、USB编程对象、USB编程(如激活配置与中止配置、同步操作、异步操作)及USBSample实例等
第10章 PCI设备驱动程序开发 本章就硬件访问、中断处理和DMA传输3个方面展开讨论,并以CY7C09449芯片为例,给出一个经过测试的PCI设备驱动程序实例——PCISample实例。另外,还给出了一个不依靠硬件设备的DMASample实例
第11章 UMDF驱动程序编程入门 介绍UMDF驱动程序编程入门,包括UMDF驱动程序的创建、生成及安装,以及一个简单的实例编程
第12章 WinDbg使用介绍 WinDbg是微软提供的一个功能非常强大的调试软件,可以在源代码级别调试Windows下的WDF驱动程序。本章主要介绍用WinDbg调试KMDF和UMDF
微软推荐的WDF书籍是《Developing Drivers with the Microsoft Windows Driver Foundation》,作者是Penny Orwick和Guy Smith。
微软提供的学习WDF的中文网站地址是:www. microsoft. com/china/whdc。
开发工具
微软提供的WDF驱动程序开发工具包WDK的最新版本是WDK 1.7,可以从其网站下载。
本书实现WDF驱动程序及应用程序实例所用的工具是:Visual C++ 6.0和WDK 1.7。
本书配套光盘
本书配套光盘中含有书中所有实例的驱动程序和应用程序的全部源代码,以及生成的驱动程序和可执行的应用程序。除USBSample和PCISample实例因需要硬件设备的支持,读者无法运行外,其他11个实例均可在Windows XP和Vista下运行。
本书特点
编程入门:详细的步骤介绍,初学者的良师益友。
应用实例:对程序作了必要的注释,了解驱动程序编程的捷径。
简单实用:KMDF的编程非常简单,Winows硬件开发工程师必须掌握。
理解深刻:笔者精通Winows设备驱动程序开发和硬件开发,所有实例均为自己创造,每个实例都有其独特意义,笔者用实例诠释自己对KMDF的理解和认识。
微软推荐的WDF书籍是“理论派”,以讲解理论为主,讲得非常详细和全面;本书是“实战派”,全书以实例为主,用实例带你快速入门。
善于学习,勤于思考,勇于实践。用这句话与投身硬件开发的青年学子共勉。
希望这本书能对您现在或将来的工作有所帮助。
本书得以顺利出版,要特别感谢周利莉的一贯支持;感谢何海洋和赵庆花的支持;感谢陈建波和何亚垒的支持;感谢朱沭红编辑和电子工业出版社。
由于作者的理论水平有限,书中难免出现差错和遗漏,敬请广大计算机应用开发人员批评指正,
十年时间,跟踪Windows设备驱动程序的开发,驱动程序VxD->WDM->KMDF,工具VtoolsD->DDK、DriverWorks->WDK,但愿WDF长久。别了WDM,别了DriverStudio。
缺月挂疏桐,漏断人初静。谁见幽人独往来,缥缈孤鸿影。……
武安河
2009年元旦
摘要:许多关于视频的软件(如视频会议、可视电话等)开发都应用于视频捕获技术。微软为软件开发人员提供了一个专门用于视频捕获的VFW SDK,从而为在Windows系统中实现视频捕获提供了标准的接口,并大大降低了程序的开发难度。由于VFW SDK只有VC和VB版,没有Delphi版,因此需要在Delphi中一一声明DLL中的各个函数和变量。文中详细介绍了的步骤,同时给出了程序实例。
1 引言 视频捕获与实时处理是目前图像处理系统中最关键的技术之一,能否准确捕获指定的视频图像,进而实现精确地数据分析与处理,关系到整个系统的成败。笔者在开发“公路安全线轧压检测系统”时就遇到此情况。该系统主要研究在公路关键地段,过往机动车辆是否瞬间轧压**安全线。因此车辆轧压安全线的一个主要原因是车辆超车或逆向行使而违反了上下行规则,这是造成交通事故的最主要、最直接的因素。本系统通过实时拍摄,抓取瞬间图像,并经过系统的分析和处理来及时准确地检测车辆行驶情况,从而驱动控制设备以作出相关处理。
显然,这个系统的关键之处是实时捕获视频图像。为此,采用微软公司推出的关于数字视频的一个软件包VFW。它能使应用程序通过数字化设备从传统的模拟视频源得到数字化的视频剪辑。VFW的一个关键思想是播放时不需要专用硬件
。为了解决数字视频数据量大的问题,需要对数据进行压缩,而VFW引进了AVI的文件标准。该标准未规定如何对视频进行捕获、压缩及播放,仅规定视频和音频该如何存储在硬盘上及在AVI文件中交替存储视频帧和与之相匹配的音频数据。但VFW可使程序员通过发送消息或设置属性来捕获、播放和编辑视频剪辑。当用户在安装VFW时,安装程序会自动地安装配置视频所需要的组件,如设备驱动程序、视频压缩程序等。VFW主要由6个模块组成。具体如表1所列。
表1 VFW功能模块
模 块 功 能
AVICAP.DLL 包含执行视频捕获的函数,它给AVI文件的I/O处理和视频、音频设备驱动程序提供一个高级接口
MSVIDEO.DLL 包含一套特殊的DrawDib函数,用来处理屏幕上的视频操作
MCIAVI.DRV 包括对VFW的MCI命令解释器的驱动程序
AVIFILE.DLL 包含由标准多媒体I/O(mmio)函数提供的更高的命令,用来访问.AVI文件
ICM 压缩管理器,用于管理的视频压缩/解压缩的编译码器(Codec)
ACM 音频压缩管理器,提供与ICM相似的服务,适用于波形音频 2 视频捕获程序开发的基本步骤
2.1 使用AVICap窗口类
笔者使用的是AVICap窗口类来开发视频捕获程序。AVICap类支持实时视频流捕获和单帧捕获,并提供对视频源的控制。通常使用的MCI控件虽然也提供了数字视频服务。并为视频叠加提供了Overlay命令集等,但这些命令主要是基于文件的操作,还不能满足实时地从视频缓存中提取数据的要求。对于使用没有视频叠加能力的捕获卡的PC机来说,用MCI提供的命令集是无法捕获视频流的。而AVICap窗口类在捕获视频方面具有一定的优势,它能直接访问视频缓冲区,而不需要生成中间文件,因而实时性很强,效率也很高。另外,它还可将数字视频捕获到一个文件中。
好了,今天关于“驱动程序开发实例”的话题就到这里了。希望大家能够通过我的讲解对“驱动程序开发实例”有更全面、深入的了解,并且能够在今后的生活中更好地运用所学知识。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。