目前SQLite for Windows phone 8.1并没有附带SQLite数据阅读器,但我需要在不事先知道Type的情况下从SQLite DB中读取数据,这是因为Table数据和模式可以在外部进行更改(在我的应用程序)。
那么有没有办法读取SQLite表数据,如下所示
var connection = new SQLiteConnection(dbName);
connection.Query<T>("Select * from Table")
哪里T未知?
或者,是否可以从从connection.GetTableInfo(&#34;表名&#34;)获得的列列表中动态创建T?
答案 0 :(得分:0)
你可以使用Andy Wigley的SQLiteWinRT包装器,它支持普通的非类型SQL(https://sqlwinrt.codeplex.com/)。
您可以使用普通旧语句:
// Get the file from the install location
var file = await Package.Current.InstalledLocation.GetFileAsync("cities.db");
// Create a new SQLite instance for the file
var db = new Database(file);
// Open the database asynchronously
await db.OpenAsync(SqliteOpenMode.OpenRead);
// Prepare a SQL statement to be executed
var statement = awaitdb.PrepareStatementAsync(
"SELECT rowid, CityName FROM Cities;");
// Loop through all the results and add to the collection
while (awaitstatement.StepAsync())
items.Add(statement.GetIntAt(0) + ": "+ statement.GetTextAt(1));
或者您可以使用预准备语句(这肯定更好,因为它提供了更多的模块化):
// Prepare a SQL statement to be executed with a parameter
var statement = await db.PrepareStatementAsync(
“SELECT rowid, CityName FROM Cities WHERE CityName LIKE ?;”);
// Bind the parameter value to the statement
statement.BindTextParameterAt(1, “c%”);
// Loop through all the results and add to the collection
// Same as above
正如您所看到的,查询返回了可用于构造对象的简单字符串。或者你可以直接使用那些(你提到你不一定了解底层对象)。
这是另一个可以帮助您入门的教程:http://blogs.windows.com/buildingapps/2013/05/30/sqlite-winrt-wrapper-for-windows-phone/