孜孜不倦的程序员:SQLite 内幕
2010-09-08 00:00:00 来源:WEB开发网图 6 使用 C#-SQLite
Static void AllManagedMain()
{
SqliteConnection conn =
New SqliteConnection(@"Version=3,uri=file:persons.sqlite");
conn.Open();
try
{
SqliteCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT COUNT(*) FROM Persons";
var ct = cmd.ExecuteScalar();
Console.WriteLine("Count = {0}", ct);
cmd = conn.CreateCommand();
cmd.CommandText = "SELECT * FROM Persons";
SqliteDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine("{0} {1} {2}", reader[0], reader[1], reader[2]);
}
}
finally
{
conn.Close();
}
}
请注意,这些 API 与前面的混合模式版本几乎相同(只是类名发生了更改,甚至只是一个大小写问题:例如,作为前缀的“SQLite”与 “Sqlite”)。现在我们已经知道 SQLite 的所有优点,但尚未了解本机模式 DLL 的任何可能的潜在安全问题。
局限性
尽管 SQLite 具有出色的特性,但必须了解其局限性才能在 SQLite 和 SQL Server 之间做出明智的决策。 SQLite 不能提供 SQL Server 所具备的全部功能,但局限远不止此。 SQLite 数据库甚至不允许开发人员将其用于多个线程,更不用说从多个线程访问该数据库。 事实上,也可以这样说,如果有两个程序要同时访问 SQLite 数据库,则可能应该升级到 SQL Server 实例(Express 或其他)。
SQLite 的主要“致胜”法宝在于许多方面与 Access 文件类似,几乎完整的 SQL-92 语法支持,以及读取其他环境(Python、Perl 等)所使用的数据库文件的能力。 从 Silverlight 或电话客户端使用它也是一个高度引起关注的方面,对于本地存储更是如此;例如,通过将 SQLite 数据库插入 Silverlight 隔离存储,可为开发人员提供一个用于存储本地数据的可移植数据库(因为它可以与 Silverlight 代码一起移植)。 请明智地使用 SQLite,它完美地实现了可提供许多重要功能选项的关系数据库统一体。
同样,如果您希望探讨某个特定主题,欢迎给我留言。 毕竟在真正意义上,这是你们的专栏。
祝您工作愉快!
本文示例源代码或素材下载
更多精彩
赞助商链接