表格结构
[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。
答案 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_colorvar 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;