返回首页


{S0的}
FilesInventorySrc.zip - 466.61 KB文件源代码和Sqlite3.exe和DLLIntroduction有时,我需要知道在目录中的文件已被添加或删除最近。例如,我想知道,如果一个图像文件已被删除或添加图片目录。这是类似的版本控制系统的功能,无需繁琐的安装,检查,检查出来,单独的存储;简单和容易使用的东西。视窗操作系统不包括这样的一个工具,我找不到任何地方提到。
时下的编程技术和Google搜索的知识武器,似乎并不太难写一个。
在这篇文章中,我将展示如何我:转换成的设计理念库存类写清单文件SQLite数据库保存持久性数据呼吁。蝙蝠运行不同的SQL脚本,每次讨论了一些未来的增强和各种设计背景
已经有CodeProject上和MSDN文章上编程与SQLite,计划内的另一个程序的执行和保存持久性数据。这些文章中详细讨论个人技术,我写的是这些技术的结合,为本文
我在微软的Visual C#2010 Express的develope代码证明了一个有趣的application.Prerequisites。如果您使用的是旧版本,然后复制到你的Form1上粘贴到Form1的代码,删除Form1.Desinger.cs并添加Inventory.cs项目。
如果你有麻烦嵌入我的代码,阅读示例代码部分因为它提出"代码粘贴到Form1的源文件。如果您的项目包含文件名为Form1.Designer.cs,从项目中删除该文件。您可能需要单击"解决方案资源管理器中显示所有文件"按钮,看到设计师的文件。?/ P>随着程序的exe和bat文件。SQLite文件应放置在Debug目录

我跳过如何嵌入SQLite的细节。如果你使用SQLite不熟悉,请阅读"在你的C#ApplicationBy茶烟中使用SQLite的??{A2的}]编程界面设计
{S2的}
应用程序启动时,用户需要进入目录清单。因此,我使用一个TextBox存储目录中的文本。然后应用程序显示在目录中的所有文件,包括在ListBox中的所有子目录。它查询数据库并显示以前的库存记录到一个ListBox。
如果搜索没有找到日志,然后用户可以选择ListBox中的一个项目,以前的库存比较。结果显示删除,没有变化和新的显示到另一个ListBox和统计学上另一个TabPage的ListBox的报告。
{中三}
通过线与罢工列出的项目表示已删除的文件,和蓝色表示新文件。因为需要更多的编码是通过线绘制的罢工;????为简单起见,我前缀与***删除***线,**新***
用户可以按保存清单"按钮清单文件。当库存完成后,它显示在ListBox的库存目录。我建议你​​一个小目录搜索第一大目录可能需要一段时间才能完成。
TAB2用于存储文件的比较统计,例如,在总目录中的文件,删除的文件和数量新的文件。
,TAB3是存储应用程序配置设置。这是尚未implemented.Persistent数据存储设计对于这种应用,我可以保存数据。TXT或逗号分隔的CSV类型的文件,但它更复杂的数据存储文件日期或大小的属性,如将难以在未来,或变得太困难执行任何排序和排序
我使用的数据存储SQLite的原因如下。可以保存多个属性(字段)可以查询,以获取结果和统计数据SQL是标准其他的功能和效益,从数据库的角度来看加上许多表inventory.db数据库由一个索引表,每个表中存储一个目录的库存数据是唯一的
path_table_map"地图库存目录名,表名索引表,因为目录名由\和需要。要转换到另一个字符或脱掉。
目录库存将在个别表店。它使用DateTime格式生成发票的发票号码键或目录名称库存,微软示例数据库发票表
我存储格式YYYYMMDDHHMMSS,年 - 月 - 日小时分钟秒,和文件名称的完整路径。
程序会自动创建并执行以下SQL脚本时,它首先开始和inventory.db的是不存在的。将于保存在sqlstmt_history.txt中的脚本,以纾缓调试。

--******** create inventory.db ********* 

create table path_table_map(

    no INTEGER PRIMARY KEY,  

    dirpath varchar(200),

    tblname varchar(200));


当用户开始库存目录,程序创建后举行库存数据和索引的表插入一条记录的表的SQL脚本。{C}当库存按钮被点击,下面的SQL脚本插入目录的库存表。
insert into t_c__temp(ckey, item) values ('_2012 01/13 6:14:49', 'c:\temp\IMG_0001.JPG');

insert into t_c__temp(ckey, item) values ('_2012 01/13 6:14:49', 'c:\temp\IMG_0002.JPG');

insert into t_c__temp(ckey, item) values ('_2012 01/13 6:29:17', 'c:\temp\IMG_0001.JPG');

insert into t_c__temp(ckey, item) values ('_2012 01/13 6:29:17', 'c:\temp\IMG_0002.JPG');

使用库存类
我设计的库存类inventory.cs SQLite的接口,生成的文件名,存储和检索记录。{C3的}步行目录包括所有子目录递归得到的文件名列表。{的C4}缓解的产卵进程的调试,运行批处理程序
常时间,这是很难发现错误编码的SQL语句。尤其是,当你必须遵循SQL语法将SQL命令,你可能已经错过了一个引号括起来的字符串。
这是比较容易写每到一个文本文件的SQL语句,然后通过一个批处理命令执行。这也节省执行时间,因为它可以减少不必要的开闭数据库和缓解调试。因此,我补充库存类模块runBatchJob。
从DOS命令提示符下执行以下命令,{C5的}使用下面的代码:{5233}
和的batchjob.bat包含如下:{C7-}在库存类runBatchJob模块:结论这篇文章我怎么一个想法转换到编程实践,设计用户界面,使用持久性存储,使用SQL查询,并调用批处理程序文件。正如我尝试快速编写,它是一个基本的设计,它可以在许多方面改善。补遗如果你下载的代码,最好是删除并重新batchjob.bat的的文件(bat文件的内容保存到一个txt文件,然后再删除它)。否则,你会得到一个恼人的安全提示确认每次程序调用运行批处理作业。窗口有知道该批处理文件不是来自你自己的系统的安全,并警告用户的危险。历史1月14日2012年 - 第一版本。

回答

评论会员: 时间:2
H