`
isiqi
  • 浏览: 16491121 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Oledbadapter使用感受

阅读更多

<!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning /> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL /> <w:BalanceSingleByteDoubleByteWidth /> <w:DoNotLeaveBackslashAlone /> <w:ULTrailSpace /> <w:DoNotExpandShiftReturn /> <w:AdjustLineHeightInTable /> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:UseFELayout /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!-- [if !mso]> < classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui> </object> <mce:style><! st1\:*{behavior:url(#ieooui) } -->

答应帮同学写个程序,程序背景为:他们公司有许多应收、应付票据到期需要承兑,我同学希望将这些票据录入到程序中,为每张票据设置一个到期提醒日期,程序在到期提醒日提醒我同学有票据需要承兑,请处理即可。其实程序看上去很简单,但是实现起来还是花费了我 1 天时间。

首先,这是一个纯客户端小程序,因此用 java flex 等写就不是很适合了,考量再三还是用 vs2005 吧,因为只要 xp sp2 之后的操作系统都带了 .net 2.0 及以上的框架的,只要 vs2005 编译后的 exe 文件即可执行。

其次,由于需要存储票据信息、票据发生关系单位信息、票据承兑银行信息,因此需要文件或者数据库来保存这些信息。起初,打算使用搞 3 xml 文件来存储,后来考虑票据还是蛮多的, xml 操作起来有点费劲,而且本来 vs2005 自带的 xml 操作性能就不是很好,最后还是决定使用 access 数据库。可笑的是本人电脑上还没有 access 数据库软件,还是 csdn 上一位朋友帮我建好库、表给我发过来的。在此,谢谢那位仁兄了。

接下来就是用 vs2005 access 数据库如何实现我同学的功能需求了,经功能分解程序主要有 3 个窗体和系统托盘功能。

<!-- [if !supportLists]-->1) <!-- [endif]-->FrmBill :票据信息维护、查看窗体;

<!-- [if !supportLists]-->2) <!-- [endif]-->FrmCompany :对方单位选取弹出对话框,维护票据信息时,需要选择对方单位;

<!-- [if !supportLists]-->3) <!-- [endif]-->FrmBank :承兑银行选取弹出对话框,维护票据信息时,需要选择承兑银行;

<!-- [if !supportLists]-->4) <!-- [endif]-->系统托盘:由于程序需要电脑启动时就启动,因此程序启动起来之后直接最小化到系统托盘中,检查是否有到期提醒日的票据,有的话告知用户。

综合 FrmBill FrmCompany FrmBank3 个窗体其实功能一样,都是数据的增、删、改和保存。考虑之下使用 ado.net oledbadapter 来填充、更新数据。在我看来 oledbadapter 操作数据就做 4 件事情:

<!-- [if !supportLists]-->1) <!-- [endif]-->创建数据库连接;

<!-- [if !supportLists]-->2) <!-- [endif]-->构建 oledbadapter 实例;

<!-- [if !supportLists]-->3) <!-- [endif]-->绑定 oledbadapter selectcommand, updatecommand, insertcommand, deletecommand ,这步操作最为关键;

<!-- [if !supportLists]-->4) <!-- [endif]-->调用 oledbadapter fill 进行查询操作、 update 进行更新操作;

为什么设置了 oledbadapter updatecommand insertcommand deletecommand 之后,当 datagridview 发生数据变更时调用 oledbadapter.update 操作即可将 datagridview 数据变更提交到数据库?这里关键之处是 datagridview datasource datatable 其每一行都是有状态,如: deleted,new,normal 等, oledbadapter 就是根据其填充的 datatable 的行状态来提交增、删、改数据,提交完毕之后,调用 datatable acceptchange 重置 datatable 的行状态。

下述为 FrmBill 窗体, Oledbadapter 的核心代码。

string sql = "select invoicevo.*, duifangdanweivo.duifangname, bankvo.bankname from invoicevo, duifangdanweivo, bankvo where expirydate >=#2010-7-25# and invoicevo.bank = bankvo.bankid and invoicevo.duifangdanwei = duifangdanweivo.id" ;

adapter = new OleDbDataAdapter (sql,DBManager .getConn());

// 绑定insertcommand ,注意参数的顺序、类型

OleDbCommand insertCmd = new OleDbCommand ("insert into invoicevo(oid, billno,duifangdanwei,bank,billtype,status,expirydate,infodate,inputdate,[money],[note]) values(?,?,?,?,?,?,?,?,?,?,?)" , DBManager .getConn());

insertCmd.Parameters.Add("oid" , OleDbType .VarChar, 100, "oid" );

insertCmd.Parameters.Add("billno" , OleDbType .VarChar, 100, "billno" );

insertCmd.Parameters.Add("duifangdanwei" , OleDbType .VarChar, 100, "duifangdanwei" );

insertCmd.Parameters.Add("bank" , OleDbType .VarChar, 100, "bank" );

insertCmd.Parameters.Add("billtype" , OleDbType .VarChar, 100, "billtype" );

insertCmd.Parameters.Add("status" , OleDbType .VarChar, 100, "status" );

insertCmd.Parameters.Add("expirydate" , OleDbType .DBDate, 0, "expirydate" );

insertCmd.Parameters.Add("infodate" , OleDbType .DBDate, 0, "infodate" );

insertCmd.Parameters.Add("inputdate" , OleDbType .DBDate, 0, "inputdate" );

insertCmd.Parameters.Add("money" , OleDbType .Double, 0, "money" );

insertCmd.Parameters.Add("note" , OleDbType .VarChar, 100, "note" );

adapter.InsertCommand = insertCmd;

// 绑定 updateCmd ,注意参数的顺序、类型

OleDbCommand updateCmd = new OleDbCommand ("update invoicevo set billno=?, duifangdanwei=?, bank=?, billtype =?, status=?, expirydate=?, infodate=?," +

"inputdate=?, [money]=?,[note]=? where oid=?" , DBManager .getConn());

updateCmd.Parameters.Add("billno" , OleDbType .VarChar, 100, "billno" );

updateCmd.Parameters.Add("duifangdanwei" , OleDbType .VarChar, 100, "duifangdanwei" );

updateCmd.Parameters.Add("bank" , OleDbType .VarChar, 100, "bank" );

updateCmd.Parameters.Add("billtype" , OleDbType .VarChar, 100, "billtype" );

updateCmd.Parameters.Add("status" , OleDbType .VarChar, 100, "status" );

updateCmd.Parameters.Add("expirydate" , OleDbType .DBDate, 0, "expirydate" );

updateCmd.Parameters.Add("infodate" , OleDbType .DBDate, 0, "infodate" );

updateCmd.Parameters.Add("inputdate" , OleDbType .DBDate, 0, "inputdate" );

updateCmd.Parameters.Add("money" , OleDbType .Double, 0, "money" );

updateCmd.Parameters.Add("note" , OleDbType .VarChar, 100, "note" );

updateCmd.Parameters.Add("oid" , OleDbType .VarChar, 100, "oid" );

adapter.UpdateCommand = updateCmd;

// 绑定DeleteCommand ,注意参数的顺序、类型

OleDbCommand deleteCmd = new OleDbCommand ("delete from invoicevo where oid=?" , DBManager .getConn());

deleteCmd.Parameters.Add("oid" , OleDbType .VarChar, 100, "oid" );

adapter.DeleteCommand = deleteCmd;

// 填充数据======================================================

DataSet ds = new DataSet ();

adapter.Fill(ds);

dgv1.DataSource = ds.Tables[0];

// 保存数据======================================================

// 这句话一定要写,否则数据可能保存不进去

this .BindingContext[this .dgv1.DataSource].EndCurrentEdit();

adapter.Update((DataTable )dgv1.DataSource);

分享到:
评论

相关推荐

    ADO.NET精简教程(快速入门)

    SQL Server 7.0或以上版本使用SqlDataAdapter,OLE DB数据源使用OleDbAdapter。 DataSet对象:DataSet对象是服务器内存中的数据库,位于内存中的数据存储,负责对数据的操作。DataSet对象可以看作是数据库在内存中...

    根据excel创建shp文件

    之后,使用OleDbAdapter对象从Excel文件中获取数据,并填充到DataSet对象中。DataSet中保存了Excel表格的所有表格信息,可以根据需要选择特定的sheet。 在数据导入阶段,还需要注意处理Excel文件可能包含多个工作表...

    dataAdapter用法大全

    `SqlDataAdapter`和`OleDbAdapter`是最常见的两种`DataAdapter`对象,它们分别用于与SQL Server和OLE DB数据源交互。 **表:SqlDataAdapter类构造函数说明** | 函数定义 | 参数说明 | 函数说明 | |---------------...

    上市公司企业澄清公告数据(2001-2023年) .xlsx

    详细介绍及样例数据:https://blog.csdn.net/li514006030/article/details/143896457

    (源码)基于Java和MySQL的物联网环境监测系统.zip

    # 基于Java和MySQL的物联网环境监测系统 ## 项目简介 本项目是一个基于Java和MySQL的物联网环境监测系统,旨在通过采集、存储和分析环境数据,实现对环境的实时监测和管理。系统涵盖了数据采集、数据存储、数据发送、数据接收、数据备份和日志记录等多个模块,确保数据的完整性和系统的稳定性。 ## 项目的主要特性和功能 1. 数据采集模块 从指定的数据文件(如radwtmp)中读取原始数据,并将其封装成Environment对象。 将多个Environment对象存储到集合中,便于后续处理。 2. 数据存储模块 创建数据库表结构,用于存储环境数据。 将采集到的环境数据批量存储到MySQL数据库中,支持批量处理以优化性能。 3. 网络模块 客户端调用采集模块获取数据,并将数据发送至服务器。 服务器端接收客户端发送的数据,并调用存储模块将数据存入数据库。支持多线程处理,提高并发性能。

    中国2002-2021年31省份经济韧性测度三级指标数据【重磅,更新!】

    1、资源内容地址:https://blog.csdn.net/abc6838/article/details/143895777 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 4、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理

    TMS WEB Core v2.0.5.0 for Delphi 11 (D11.1) 下载

    TMS WEB Core v2.0.5.0 for Delphi 11 (D11.1) 下载仓库 简介 本仓库提供 TMS WEB Core v2.0.5.0 for Delphi 11 (D11.1) 的资源文件下载。TMS WEB Core 是一个强大的工具,专为 Delphi 开发者设计,帮助他们轻松构建现代化的 Web 应用程序。 资源文件信息 标题: TMS-WEB-Core-v2.0.5.0-for-Delphi-11-D11.1 描述: TMS_WEB_Core_v2.0.5.0_for_Delphi_11_D11.1 使用说明 下载资源文件: 点击仓库中的资源文件进行下载。 安装: 按照 TMS WEB Core 的官方安装指南进行安装。 开发: 使用 Delphi 11 进行 Web 应用程序的开发。 注意事项 请确保您已经安装了 Delphi 11 (D11.1) 版本。 在安装和使用过程中,请参考 TMS WEB Core 的官方文档以获取更多帮助。 联系我们 如果您在使用过程中遇到任何问题或有任何建议,请通过以下方式联系我们: 邮箱: support@exa

    PyCharm安装与基本配置指导

    内容概要:本文档是一份详细的PyCharm安装与基本配置教程,旨在帮助初学者轻松掌握从下载安装到运行首个Python程序的所有步骤。内容覆盖PyCharm的选择与下载、安装路径设定、环境变量配置以及首次启动后的各项重要设置,如主题更换、汉化、安装插件增强体验等,最后还简述了如何运行第一个程序。同时提供了丰富的配图辅助理解和操作。 适合人群:面向编程新手特别是对Python感兴趣的学习者。对于有一定Python基础但缺乏高效IDE使用经验的研发人员也有一定借鉴意义。 使用场景及目标:①快速熟悉PyCharm IDE的基本操作与环境搭建流程;②优化编码体验,学会利用插件提升效率;③为深入Python编程学习打下坚实的基础。 阅读建议:按照步骤执行操作时注意对比教程提供的图片与实际界面是否一致,如有疑问可参照文档给出的具体链接进一步探索相关资料。此外,虽然本文档主要针对PyCharm的社区版,高级用户也可以将其作为官方文档的补充参考材料。

    SQL 学习教程(入门到实践)

    本教程从基础开始,介绍了 SQL 的语法和常用操作,包括创建表、查询数据、更新与删除、聚合与连接查询,以及数据库完整性和索引。通过提供学习资源和练习任务,帮助您快速掌握 SQL 的核心技能,为数据库管理和数据分析奠定基础。

    人工智能开发项目深度学习项目源码带指导视频服饰关键点定位

    人工智能开发项目深度学习项目源码带指导视频服饰关键点定位提取方式是百度网盘分享地址

    vncviewer.exe

    vncviewer.exe

    java毕设项目之基于Java的校园消费点评系统(源码+说明文档+mysql).zip

    环境说明:开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat 开发软件:eclipse/myeclipse/idea Maven包:Maven 浏览器:谷歌浏览器。 项目经过测试均可完美运行

    人工智能开发项目深度学习项目源码带指导视频令人拍案叫绝的WGAN

    人工智能开发项目深度学习项目源码带指导视频令人拍案叫绝的WGAN提取方式是百度网盘分享地址

    (源码)基于DevExpress框架的进销存管理系统.zip

    # 基于DevExpress框架的进销存管理系统 ## 项目简介 进销存管理系统是一个基于CS架构的应用程序,主要用于管理企业的采购、销售、库存等业务流程。系统采用DevExpress插件进行界面设计和数据展示,提供了丰富的功能模块,包括采购管理、供应商管理、销售管理、库存管理、客户管理、系统用户管理和商品管理。 ## 项目的主要特性和功能 1. 采购管理管理企业的采购订单,跟踪采购流程。 2. 供应商管理维护和管理供应商信息,包括供应商的详细资料和历史交易记录。 3. 销售管理管理销售订单,跟踪销售流程和客户需求。 4. 库存管理实时监控库存情况,管理库存的进出和调拨。 5. 客户管理维护和管理客户信息,包括客户的详细资料和历史交易记录。 6. 系统用户管理管理系统的用户账号和权限,确保系统的安全性和稳定性。 7. 商品管理管理商品信息,包括商品的详细资料和库存情况。 ## 安装使用步骤 ### 环境准备

    (源码)基于C语言和C++的简单网站留言评论系统.zip

    # 基于C语言和C++的简单网站留言评论系统 ## 项目简介 这是一个基于C语言和C++的简单网站留言评论系统,旨在通过学习和实践计算机入门到进阶的知识,实现一个功能完善的网站评论系统。项目分为初稿和中稿两部分,初稿使用C语言实现,中稿则在初稿的基础上,将编程语言切换到C++,并利用第三方库进行功能优化。 ## 项目的主要特性和功能 1. 前端界面通过HTML和CSS实现简洁的网页界面,用户可以浏览评论、发表新评论和查看回复。 2. JavaScript事件监听使用JavaScript监听用户的前端操作,如发表评论、点赞等,并向后端发送请求。 3. 后端处理使用C语言和C++编写服务器进程,处理前端请求,与数据库进行交互,并返回结果。 4. 数据库操作通过MySQL数据库存储评论数据,包括评论内容、评论回复等。 5. 多线程处理服务器进程使用多线程模式处理多个客户端的请求,提高处理效率。

    基于springboot的校园失物招领系统源码数据库文档.zip

    基于springboot的校园失物招领系统源码数据库文档.zip

    C# 学习教程(入门到实践)

    本教程涵盖了 C# 的基础语法、类与对象、继承与接口、文件操作、以及异步编程,通过实用示例和练习帮助您快速入门。C# 的强大功能和广泛应用,使其成为开发 Windows 应用程序、游戏(如 Unity)、Web API 和云服务的理想选择。

    《Linux操作系统实用教程(第2版)》- 配套软件

    《Linux 操作系统实用教程(第 2 版)》这本书是一本非常实用的书籍,它为读者提供了关于 Linux 操作系统的深入讲解和实用教程。在这本书中,读者可以学习到 Linux 操作系统的基本概念、命令行操作、文件系统管理、用户管理、进程管理等方面的知识。同时,这本书还提供了丰富的配套软件,这些软件可以帮助读者更好地学习和使用 Linux 操作系统。例如,书中可能会介绍一些常用的文本编辑器、编译器、调试器等软件,这些软件可以帮助读者在 Linux 环境下进行编程和开发。此外,书中还可能会介绍一些系统管理工具、网络工具等软件,这些软件可以帮助读者更好地管理和维护 Linux 系统。总之,《Linux 操作系统实用教程(第 2 版)——配套软件》是一本非常值得一读的书籍,它可以帮助读者更好地了解和掌握 Linux 操作系统。

    springboot286入校申报审批系统的设计与实现.zip

    论文描述:该论文研究了某一特定领域的问题,并提出了新的解决方案。论文首先对问题进行了详细的分析和理解,并对已有的研究成果进行了综述。然后,论文提出了一种全新的解决方案,包括算法、模型或方法。在整个研究过程中,论文使用了合适的实验设计和数据集,并进行了充分的实验验证。最后,论文对解决方案的性能进行了全面的评估和分析,并提出了进一步的研究方向。 源码内容描述:该源码实现了论文中提出的新的解决方案。源码中包含了算法、模型或方法的具体实现代码,以及相关的数据预处理、实验设计和性能评估代码。源码中还包括了合适的注释和文档,以方便其他研究者理解和使用。源码的实现应该具有可读性、可维护性和高效性,并能够复现论文中的实验结果。此外,源码还应该尽可能具有通用性,以便在其他类似问题上进行进一步的应用和扩展。

    基于springboot高校学术交流平台源码数据库文档.zip

    基于springboot高校学术交流平台源码数据库文档.zip

Global site tag (gtag.js) - Google Analytics