如何从xamarin中的本地数据库中检索字符串值?

时间:2017-07-18 13:51:37

标签: xamarin sqlite-net

表格结构

[Table(TableConst.TABLE_BRANDING)]
public class BrandingInfoModel
{
    public int id { get; set; }
    public string title { get; set; }
    public string primary_color { get; set; }
    public string secondary_color { get; set; }
    public string tertiary_color { get; set; }
}

从数据库获取资源的方法

    public string GetColorResourceFromDatabase(string key)
    {
        try
        {

            string value = mSqlConnection.Query<string>("SELECT " + key + " FROM data").ToString();
            return value;

        }
        catch (Exception e)
        {
            string error = e.Message;
            return null;
        }

    }

我编写了基于 SELECT 查询从本地数据库返回值的方法。但它返回null。

3 个答案:

答案 0 :(得分:4)

我试过这种方式

  //Get resource from Brading table
    public BrandingInfoModel GetResourceFromDatabase(string key)
    {
        try
        {
            //string value = (from i in mSqlConnection.Table<BrandingInfoModel>() select i.menu_text_color).ToString();

            var queryResult = mSqlConnection.Query<BrandingInfoModel>("SELECT " + key + " FROM " + TableConst.TABLE_BRANDING).FirstOrDefault();
            return queryResult;

        }
        catch (Exception e)
        {
            string error = e.Message;
            return null;
        }

    }

返回所需的输出。

答案 1 :(得分:0)

而不是使用SQL查询来执行选择。请考虑使用Linq查询来获得相同的结果。

例如,如果要选择一行并获取带有id:

的primary_color
var rowData = mSqlConnection.Table<BrandingInfoModel>()
                            .FirstOrDefault(i => i.id == 123);
if (rowData != null)
{
    return rowData.primary_color;
}

答案 2 :(得分:0)

我的解决方案是创建一个支持类PrimitiveTypeItem并对其进行查询。 这将不仅限于字符串,而是您想要的任何原始类型。

public class PrimitiveTypeItem<T>
{
    public T Value { get; set; }
}

var resultString = mSqlConnection.FindWithQuery<PrimitiveTypeItem<string>>("SELECT title AS VALUE FROM BrandingInfoModel LIMIT 1").Value;

// another example 
var resultLong = mSqlConnection.FindWithQuery<PrimitiveTypeItem<long>>("SELECT SUM(REALWONPRIZE) AS VALUE FROM SOMETHING").Value;