【问题标题】:Xamarin Execute SQLite Query without knowing tablemapping or classesXamarin 在不知道表映射或类的情况下执行 SQLite 查询
【发布时间】:2017-09-13 07:17:35
【问题描述】:

我目前正在使用 C#/Xamarin 编写一个 android 应用程序。该应用程序使用本地 SQLite 数据库。我想执行一个写在应用程序中的查询。 表是通过像这样的类创建的:

class TestClass
{
    [PrimaryKey, AutoIncrement, Column("id")]
    public int Id { get; set; }
    [NotNull, Column("messagetext")]
    public string MessageText { get; set; }
    [Column("messagetype")]
    public int MessageType { get; set; }

    public TestClass(string mText, int mType)
    {
        MessageText = mText;
        MessageType = mType;
    }
}

数据库有多个表。

功能

DBConnection.Execute("这是一个查询")

只执行查询。 由于我需要得到一个结果,我应该使用

DBConnection.Query

但是在编程时,我不知道查询选择、连接了哪些表... 查询函数需要一个 TableMapping 或 Class。

有没有办法在不知道表映射或其他东西的情况下执行查询并获得结果?

谢谢。

【问题讨论】:

    标签: c# android sql sqlite xamarin


    【解决方案1】:

    重载的 Query 方法上的泛型参数指示您希望从查询中返回什么类型的值。

    例如,假设您只想从 TestClass 表的每一行中选择 Id 字段。由于 Id 是 int,因此方法调用如下所示:

    List<int> testIds = DBConnection.Query<int>("SELECT Id FROM TestClass");
    

    【讨论】:

    • 这不是我所需要的。 SQL 语句由用户在运行时编写。所以我不知道它是整数、字符串还是他例如从 2 个连接表中选择 *。
    • 好的,感谢您的澄清。如果查询是由用户编写的,那么听起来您需要对数据库连接的访问​​级别低于此库提供的访问级别。 Check out the accepted answer to this similar question
    猜你喜欢
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 2013-01-27
    • 2014-06-06
    相关资源
    最近更新 更多