用于Windows Phone 8.1的Sqlite数据读取器

时间:2015-01-02 14:02:35

标签: sqlite windows-phone-8.1

目前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?

1 个答案:

答案 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/