把你的Access数据库嵌入到资源中发布
我们做程序的时候,一般如果少量的数据存储都有可能用到Access数据库,
我们再发布程序的时候也同时将此数据放置入发布程序包中一起发布.
这可能并不是一个好的方法,下面我给大家介绍一另一种方式,就是将
Access数据库嵌入到资源Dll中发布!
首先我们创建一个资源动态的类库(Resource),添加一个现有项目,
选择所有文件,加入你的mdb文件,在文件属性中'生成操作'设置为
'嵌入的资源'
然后我们可以在代码中,导入动态库,Assembly.LoadFrom("Resources.dll"),
获得动态库资源GetManifestResourceStream,
通过写文件的方式,将数据库写到指定的目录下。
public static Stream GetStream( string name )
{
return GetResourceAssembly().GetManifestResourceStream(RESOURCE_ASSEMBLY_PREFIX + name);
}
public static Assembly GetResourceAssembly()
{
return Assembly.LoadFrom("Resources.dll");
}
public static void WriteEmbeddedFile( string name, string fileName )
{
using( Stream stream = GetStream( name ) )
{
FileInfo file = new FileInfo( fileName );
using( FileStream fileStream = file.Create() )
{
byte [] buf = new byte[ 1024 ];
int size;
while( (size = stream.Read( buf, 0, 1024 )) > 0 )
{
fileStream.Write( buf, 0, size );
}
}
}
}