通用的类

 

随着电脑在企业的普及,企业使用的业务处理软件越来越多。在企业使用软件的初期,各业务系统是彼此独立的,随着企业信息化建设的提高,各种应用软件的数据资源共享便成了一个急需解决的问题。考虑到成本等因素,不可能推翻旧系统,全部重新规划。于是,通过文件型数据库进行数据交换便成为目前一种流行的处理手段。

虽然XML为数据交换提供了一种标准和发展方向,但是目前进行数据交换多数采用的还是文本文件、EXCEL电子表格文件、VFP.DBF)、ACCESS数据库文件。所以,编写一个可以将业务数据导成指定类型文件的通用类,还是比较有意义。下面我们用VB来实现一个导出SQL Server数据的通用类。

打开VB,新建一个“标准EXE”,菜单中选择“工程-->添加类模块”,选择“VB类生成器”,打开进入VB的类生成器。

一、 类的属性及方法定义

在类生成器中,添加如左表所示的类、属性及方法:

添加一个名为“在类生成器中,一个名为“Export SQL Server”的新类,这是我们导出SQL Server的类要包含的信息,在该类中添加如左表所示内容:

二、 要解决的问题

为了实现通用的导入/导出,我们要解决以下几个问题:

1) 处理效率:不能采用逐条处理的方法,那样处理虽然简单,但效率很低;

2) 文件位置:因为文件数据由客户端程序操纵,所以无论是导入,还是导出,数据文件都必须在客户端上,而不能在SQL服务器上;

3) 文件创建:对于导出数据,因导为不可能事先知道要导出的数据源的表结构,因此得考虑如何根据源数据表结构,创建目标表结构的问题。

三、 问题分析

首先考虑效率的问题,在程序中实现对数据库的处理,都是使用数据库对象来操作,然而,数据库对象并不提供两个数据对象之间的直接数据交互功能,只能逐

条处理,所以我们不能采用数据库对象直接实现数据的导入/导出。而在数据库中,实现表之间的数据导入/导出直接用SQL语句就可以搞定,而且处理也是批量处理,所以最有效的方法是在数据库中直接实现导入/导出,这就要求我们找一种数据库,这种数据库能访问我们导入/导出处理涉及到的所有数据库类型,很显然,ACCESSSQL Server都符合我们的要求。

   再来考虑文件位置的问题,虽然SQL Server中提供了openrowsetopendatasource、链接服务器让我们直接与其它类型的数据库之间交换数据,但由于SQL Server是服务型数据库,它的所有SQL语句都是在SQL Server服务器上执行,因此它访问的文件型数据库也是基于SQL Server服务器上的,但我们要求导入/导出处理的文件型数据库在客户端,所以我们不能直接用SQL Server中的功能来实现导入/导出处理;而ACCESS数据库,它通过链接表的方式来访问其他类型的数据库,而且它操作的链接表对象的来源是基于调用它的客户端,这正是我们所需要的。我们只要利用程序创建链接表来操作导入/导出涉及到的源表及目标表就行了,当然前提是我们要找到程序中创建各种数据库对象链接表的方法,其实就是要解决连接字符串(Connection String)的问题。

最后一个是文件的创建问题,通过上面的分析,我们决定由ACCESS数据库作为导入/导出的中转站,因此我们只要按ACCESS数据库的处理方法分析链接表,就可以分析出导入的数据源的结构信息,而用DAO数据库对象也可以方便地创建各种文件型数据库及表对象(当然,也许我们会找到更好的方法),所以编写这个类的话,我们把DAO作为数据处理对象。在工程中添加DAO对象的引用:工程-->引用--> Microsoft DAO 3.6 ObjectLibrar

四、 问题解决

1) 连接字符串(Connection String)的问题

如何得到连接字符串模板呢,我们做一个试验,打开ACCESS,新建一个ACCESS数据库,然后在菜单中,依次选择“文件-->获取外部数据-->链接表”,在出现的“链接”对话框中,文件类型选择“Microsoft Excel*.xls)”,随便找一个Excel文件,按向导提示完成链接表的处理,这样在新建的ACCESS数据库中,就会产生一个链接到Excel的链接表。

接下来我们要得到它的Connection String,在菜单中,依次选择“插入-->模块”,进入模块编辑窗口,按Ctrl+G调出立即窗口,输入下面的语句:

debug.Print currentdb.TableDefs("第一步中生成的链接表名").Connect

这样我们就得到了创建Excel链接表的Connection String,同样的方法,我们可以得到其他数据库类型的Connection String

2) 数据库文件创建的问题

在数据库中,用“SELECT ... INTO 目标表 FROM源表”的形式,是可以直接创建表的,如果我们能在ACCESS数据库中,直接这样来创建导出中的目标文件,那就省去了分析源链接表,创建目标数据文件的麻烦,所以用链接表的方式,还不是首选。

而在ACCESS数据库中,可以用“SELECT * FROM[Connection String].表名"的形式来直接访问非ACCESS数据库的,那么,是否能用“SELECT * INTO [Connection

String] FROM [Connection String].表名”呢,经过在ACCESS中的测试,完全可行,这样就省去了分析导入的数据来源结构的问题,轻松很多。

3) 通用类中涉及到的Connection String

根据不同的数据有所不同,也可根据VB中的向导工具生成连接字符串。

五、 补充说明

经过上面的分析,相信大家对于如何编写这个通用的类,心里都有了底,这里需要补充的是,ACCESS数据库不仅支持访问SQL Server数据库,也支持访问ORACLEDB2 SYBASE 这类的数据库,所以如果大家有兴趣的话,可以修改上面的类定义,使其更通用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很多,不写全了。。下载下来好好看 ----------Database-------------- 1.DataTable帮助(DataTableHelper.cs) 2.Access数据库文件操作辅助(JetAccessUtil.cs) 5.查询条件组合辅助(SearchCondition.cs) 6.查询信息实体(SearchInfo.cs) 8.Sql命令操作函数(可用于安装程序的时候数据库脚本执行)(SqlScriptHelper.cs) ----------Device-------------- 声音播放辅助(AudioHelper.cs) 摄像头操作辅助,包括开启、关闭、抓图、设置等功能(Camera.cs) 提供用于操作【剪切板】的方法(ClipboardHelper.cs) 获取电脑信息(Computer.cs) 提供用户硬件唯一信息的辅助(FingerprintHelper.cs) 读取指定盘符的硬盘序列号(HardwareInfoHelper.cs) 提供访问键盘当前状态的属性(KeyboardHelper.cs) 全局键盘钩子。这可以用来在全球范围内捕捉键盘输入。(KeyboardHook.cs) 模拟鼠标点击(MouseHelper.cs) 全局鼠标钩子。这可以用来在全球范围内捕获鼠标输入。(MouseHook.cs) MP3文件播放操作辅助(MP3Helper.cs) 关联文件(ExtensionAttachUtil.cs) 注册文件关联的辅助(FileAssociationsHelper.cs) 打开、保存文件对话框操作辅助(FileDialogHelper.cs) 常用的文件操作辅助FileUtil(FileUtil.cs) INI文件操作辅助(INIFileUtil.cs) 独立存储操作辅助(IsolatedStorageHelper.cs) 序列号操作辅助(Serializer.cs) 获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories.cs) 简单的Word操作对象(WordCombineUtil.cs) 这个提供了一些实用的方法来转换XML和对象。(XmlConvertor.cs) XML操作(XmlHelper.cs) ----------Format-------------- 参数验证的通用验证程序。(ArgumentValidation.cs) 这个提供了实用方法的字节数组和图像之间的转换。(ByteImageConvertor.cs) byte字节数组操作辅助(BytesTools.cs) 处理数据型转换,数制转换、编码转换相关的(ConvertHelper.cs) CRC校验辅助(CRCUtils.cs) 枚举操作公共(EnumHelper.cs) 身份证操作辅助(IDCardHelper.cs) 检测字符编码的(IdentifyEncoding.cs) RGB颜色操作辅助(MyColors.cs) 日期操作(MyDateTime.cs) 转换人民币大小金额辅助(RMBUtil.cs) 常用的字符串常量(StringConstants.cs) 简要说明TextHelper。(StringUtil.cs) 获取文字首字拼写,随机发生器,按指定概率随机执行操作(Util.cs) 各种输入格式验证辅助(ValidateUtil.cs) ----------Network-------------- Cookie操作辅助(CookieManger.cs) FTP操作辅助(FTPHelper.cs) HTML操作(HttpHelper.cs) 网页抓取帮助(HttpWebRequestHelper.cs) Net(NetworkUtil.cs) IE代理设置辅助(ProxyHelper.cs) ----------Winform-------------- 跨线程的控件安全访问方式(CallCtrlWithThreadSafety.cs) CheckBoxList(CheckBoxListUtil.cs) 窗口管理(ChildWinManagement.cs) 由马丁·米勒http://msdn.microsoft.com/en-us/library/ms996492.aspx提供一个简单的方法打印工作的一个RichTextBox一个帮手(ExRichTextBoxPrintHelper.cs) 显示,隐藏或关闭动画形式。(FormAnimator.cs) 对窗体进行冻结、解冻操作辅助(FreezeWindowUtil.cs) 窗体全屏操作辅助(FullScreenHelper.cs) GDI操作辅助(GDI.cs) 提供静态方法来读取这两个文件夹和文件的系统图标。(IconReaderHelper.cs) 图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序使用。(NativeMethods.cs) 托盘图标辅助(NotifyIconHelper.cs) 打印机(POSPrinter.cs) 图片、光标、图标、位图等资源操作辅助(ResourceHelper.cs) RTF字符格式辅助(RTFUtility.cs) 串口开发辅助(SerialPortUtil.cs) 设置文本属性提供一个ToolStripStatusLabel(SafeToolStripLabel.cs) 只运行一个实例及系统自动启动辅助(StartupHelper.cs) Web页面预览效果图片抓取辅助(WebPageCapture.cs) 供Asp.Net直接调用的包装(WebPreview.cs) 计算机重启、关电源、注销、关闭显示器辅助(WindowsExitHelper.cs) 简单写了点,还有很多,希望能对大家有帮助 ================================================================================================ 本资料共包含以下附件: WHC.OrderWater.Commons.rar 公共文档.docx

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值