最近在做一個winform的程序,考慮用Sqlite的數(shù)據(jù)庫,小巧而實用,比Access強多了,不過需要加密,不過free版本沒有實現(xiàn)加密,有一些c++的實現(xiàn):比如:http://www.sqlite.com.cn/MySqlite/3/253.Html 和http://www.cppblog.com/niewenlong/archive/2007/06/01/25261.html 。不過,鑒于我對c++不是很精通,于是就采用了ADO.NET 2.0 SQLite Data Provider 這樣可以直接利用它來創(chuàng)建一個加密的sqlite數(shù)據(jù)庫。
有關(guān)c#代碼如下:
1、創(chuàng)建空的sqlite數(shù)據(jù)庫。
創(chuàng)建的數(shù)據(jù)庫是個0字節(jié)的文件。
2、創(chuàng)建加密的空sqlite數(shù)據(jù)庫
3、給未加密的數(shù)據(jù)庫加密
4、打開加密sqlite數(shù)據(jù)庫
//方法一
SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test2.db“);
cnn.SetPassword(“password“);
cnn.Open();
//方法二
SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();
builder.DataSource = @”c:\test.db“;
builder.Password = @”password“;
SQLiteConnection cnn = new SQLiteConnection(builder.ConnectionString);
cnn .Open();
注:
A、因為加密的函數(shù)是利用windows api,故加密后的數(shù)據(jù)庫只能適用在windows平臺,加密的方式是整體文件加密。
B、加密的算法是RC4,如果你想采用別的加密算法來加密,請參考ADO.NET 2.0 SQLite Data Provider 的源碼來修改。
c、相關(guān)sqlite數(shù)據(jù)庫操作類似ADO.NET 2.0。詳見ADO.NET 2.0 SQLite Data Provider的幫助文檔。
c、ADO.NET 2.0 SQLite Data Provider 版本為:1.0.53.0 ,SQLite版本 : 3.6.0。
d、開發(fā)環(huán)境為vs2008。
ADO.NET 2.0 SQLite Data Provider的下載地址:http://sourceforge.net/project/showfiles.php?group_id=132486&package_id=145568
有關(guān)sqlite的中文介紹,你可以看看這里:http://www.cnblogs.com/shanyou/archive/2007/01/08/615245.html
本文地址:http://www.watch-life.net/net-tip/sqlite-encrypted.html