一、工程背景
假定一个应用程序(App)需要新建、打开和保存项目文件,并且每个项目文件中又包含数据文件的情形,那么要求在创建或编辑项目的过程中动态的创建数据库文件,或者已知数据库结构时在应用程序中包含一个空的数据库文件,然后在需要时将其副本拷贝到当前项目的工作目录下。下面给出一种实现模式,实现这种面向单机的数据库使用方式。
二、工具
我们以VS2012+SQLite作为工具实现上述任务。选择SQLite的主要因为它是基于文件系统的数据库,能够方便地执行拷贝和连接等操作。另外,经本人简单测试发现其连接速度明显优于内置的SQL Server Compact数据库。总之,对于桌面应用通常足够了。
三、关键技术
1、创建数据库
假定App所需数据库结构已知,那么在VS2012的服务器资源管理器中右键点击“数据连接”,然后“添加连接”。在“数据源”项中选择System.Data.SQLite Database File,然后点击“New”按钮,定位到一个目录,输入数据库文件名,如MyDb.db,点击保存。测试连接成功后,点确定返回服务器资源管理器视图。此时可以看到已创建的数据库连接,然后就可以为其添加数据表了。
2、在特定项目中使用数据库
将数据库复制到当前App项目的工作目录下,可以使用Microsoft.VisualBasic.FileIO.FileSystem.CopyFile()函数实现数据库文件的拷贝。然后建立与该数据库文件的连接即可以“断开连接层”的方式对数据库进行操作了。
string conStr= @"data source=c:\MyDb.db";
using (SQLiteConnection scon = new SQLiteConnection(conStr))
{
SQLiteDataAdapter sda = new SQLiteDataAdapter("SELECT * FROM Table1", scon);
DataTable dt = new DataTable();
sda.Fill(dt);
}
注意引用System.Data和System.Data.SQLite两个命名空间。