【问题标题】:Xamarin Android SQLite data reading gives me the "SQLite.SQLiteException: no such table: tblLidhja" exceptionXamarin Android SQLite 数据读取给了我“SQLite.SQLiteException:没有这样的表:tblLidhja”异常
【发布时间】:2019-12-30 03:04:53
【问题描述】:

我正在尝试构建一个 Android Xamarin 应用程序。我创建了一个名为 regjistri.sqlite 的 SQLite 数据库。数据库没有损坏,我可以通过 PC 上的 SQLite 浏览器打开它。我已将此数据库保存到我的 android Documents 文件夹中。 我正在尝试通过 sqlite-net-pcl 库访问它,如下所示。

string dbPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments), "regjistri.sqlite");
var db = new SQLiteConnection(dbPath);
var data = db.Query<object>("SELECT COUNT(*) FROM tblLidhja ");

我还拥有应用程序的读写权限。当我通过 USB 电缆调试它时,它给了我 "SQLite.SQLiteException: no such table: tblLidhja" 异常。有人可以帮我看看可能出了什么问题,或者我应该改变什么来读取一些数据?

【问题讨论】:

  • 你的意思不是 var data = db.Query("SELECT COUNT() FROM tblLidhja "); 它应该是 var data = db.Query("SELECT COUNT() FROM tblLidhja"); ?
  • 您的实际tblLidhja 类代码是什么?您的代码中的TableCreate 调用在哪里?
  • 如果路径不存在,SQLite 会为你创建一个空数据库——我怀疑这是发生的——你的路径不正确。使用 File.Exists 进行验证
  • 您必须在打开与 DB 的连接之后以及从中查询任何数据之前调用 db.CreateTable&lt;tblLidhja&gt;()(这就是异常告诉您的 - 您的 DB 中没有这样的表)。你可以在 sqlite-net repo 页面找到一个例子:github.com/praeclarum/sqlite-net

标签: sqlite xamarin xamarin.android sqlite-net-pcl


【解决方案1】:

在获取数据之前,首先需要检查数据库中是否存在该表。可以参考这个document来检查。

顺便试试用这种方式从数据库中获取计数:

var db = new SQLiteConnection("DbPath");
var stocksStartingWithA = db.Query<TableName>("SELECT * FROM DbNmae ");
int count = stocksStartingWithA.Count; //get count from table

这里是similar discussion with java code,但也可以在xamrin项目中引用。

【讨论】:

    猜你喜欢
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多