【问题标题】:Why can't I read a TEXT attribute from SQLITE TABLE in the application?为什么我不能从应用程序的 SQLITE TABLE 中读取 TEXT 属性?
【发布时间】:2020-05-10 04:18:18
【问题描述】:

我把这张表放在一个Sqlite db3中:

其中包含我可以在 SQLite Studio SQL 编辑器中通过简单查询读取的数据:

Select Testo FROM Contenuto

如您所见,我只需要 Testo 属性。

当我尝试在我的 xamarin Forms 应用程序中执行相同的查询或尝试检索所有属性(Id、IDSezione、Indice、Testo)时,结果中除了 Testo 之外的所有属性。 (Continuti 是一个 Contenuto 对象列表)

这是我的数据库方法:

public Task<List<Contenuto>> GetContenutoAsync(int idsezione)
{
        return Database.Table<Contenuto>().Where(i => i.IDSezione == idsezione).ToListAsync();
}

所以我想知道问题出在哪里,是否有人可以帮助我。 我认为这是一个大小限制尺寸,但它只使用一个字符而不是我需要的长文本。

[Table(nameof(Contenuto))]
public class Contenuto
{
    public int ID { get; set; }

    public int IDSezione { get; set; }

    public int Indice { get; set; }

    public string Testo { get; set; }
}

谢谢,里卡多

【问题讨论】:

  • Contenuto 定义在哪里?
  • 在共享项目的一个类中
  • 请发布该课程的代码,以便我们查看
  • @Jason 我已经编辑了答案
  • 您确定您正在阅读预填充的数据库而不是空白副本吗?使用预先填充的数据库需要一些重要的设置。你能在没有 WHERE 子句的情况下读取整个表来验证你得到了正确的行数吗?

标签: c# sqlite xamarin.forms xamarin.android


【解决方案1】:

这就是我解决问题的方法:

原来表的Testo属性被命名为Contenuto作为表名。没注意,我还是将数据库添加到项目中。

我在第一次运行应用时注意到了这个问题(抛出异常,因为您可以在查询中使用表名作为属性),并在公共项目中编辑了数据库

这样做不会更新 Android/iOS DB 链接文件。 这是我正在寻找 Testo 属性但不存在的方法中的实际问题。

因此,当您将 DB 作为新元素添加到 android 或 iOS 项目时,请记住将其属性设置为 Always copy,这样做将始终在构建应用程序时更新链接的 DB

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 2020-07-01
    • 2022-11-01
    • 2016-03-18
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多