孜孜不倦的程序员:SQLite 内幕
2010-09-08 00:00:00 来源:WEB开发网然后,该包装类的使用类似于图 4 中的示例。
图 4 使用 SQLite 包装类
static void NativeWrapperMain()
{
using (SQLite db = new SQLite("persons.sqlite"))
{
db.ExecuteNonQuery("CREATE Table Persons " +
"(first TEXT, last TEXT, age INTEGER)");
db.ExecuteNonQuery("INSERT INTO Persons (first, last, age) " +
"VALUES ('Aaron', 'Erickson', 38)");
db.ExecuteNonQuery("INSERT INTO Persons (first, last, age) " +
"VALUES ('Rick', 'Minerich', 29)");
db.ExecuteNonQuery("INSERT INTO Persons (first, last, age) " +
"VALUES ('Talbott', 'Crowell', 35)");
DataTable table = db.ExecuteQuery("SELECT * FROM Persons");
foreach (DataRow row in table.Rows)
{
Console.WriteLine("{0} {1} {2}", row[0], row[1], row[2]);
}
}
}
很明显,有多个操作可添加到图 4 中的 SQLite 包装类,但现已得到必要的基本功能,这部分归功于 System.Data 中 DataTable/DataRow/DataColumn 核心类的出色的数据库无关性特性。
双重抽象
从某些方面说,SQLite 数据库的优势就在于其底层设计和实施,但成为嵌入式数据库意味着在利用其非常轻型的功能时会存在“冲突”。 添加包装类,确保 SQLite DLL 位于可供程序访问的位置(通常将其放入包含可执行文件的目录),现在您就可以十分成功地编写 SQL 语句。 当然,您确定自己确实要这样做。
赞助商链接