SQLite-net查询不返回行

时间:2017-06-27 03:35:09

标签: c# sqlite xamarin.android

我正在使用xamarin来创建Android应用。我有一个预先存在的sqlite数据库,我正在加载到设备上。

我正在使用Frank Kreuger的Sqlite-Net nuget包。

在db中,我有一个表名列表,其中当前有一行。

我使用Query方法尝试检索行。但它没有归还。

我打开连接

db = new SQLiteConnection(FileAccessHelper.GetDBLocation(dbName));

这给了我与我位于的数据库的连接         DatabasePath“/data/user/0/readdb.readdb/files/packinglists.sqlite”

然后我尝试检索行

try
{
    List<tabledefs.Lists> myLists = db.Query<tabledefs.Lists>("select * from Lists");
    foreach (tabledefs.Lists list in myLists)
    {
        listNames[counter++] = list.ListName;
    }
}catch (Exception e)
{
    //do something
}

即使我可以手动打开数据库并查询数据,该调用也不会返回任何行。

1 个答案:

答案 0 :(得分:-1)

Haven并没有在移动设备上摆弄SQLite,但很确定该过程与网络服务相同。

// Location of the Database
string connectionString;

// Use a "Using" instead of a try-catch-finally statement for automatic Dispose
using (var db = new SQLiteConnection (connectionString))
{
   // Use a Data Adapter and CommandBuilder to initiate and receive the data from the db.
   SQLiteDataAdapter myDataAdapter = new SQLiteDataAdapter ("select * from Lists", connectionString);
   SQLiteCommandBuilder myCommand = new SQLiteCommandBuilder (myDataAdapter);

   // Create a Data Table to Store the db
   // Open the Database
   // Fill the Data Table from the Adapter that received the db
   DataTable newDataTable = new DataTable;
   db.Open();
   myDataAdapter.Fill (newDataTable);

   // Now if you run through each row and use "row.ItemArray[]" you can get 
   // the specific data type in each value.
   foreach (DataRow row in newDataTable.Rows)
   {
       "Your Rows Here"
   }
}

应该单独为每行提供所有你需要做的就是将行的每个索引转换为正确的值类型以获取列的值。