如何检索xamarin中本地数据库的字符串值?
问题描述:
[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;
}
}
我写了返回基于本地数据库中的值来选择查询的方法来获取资源。但它返回null。
答
我已经试过这样
//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;
}
}
它返回所需的输出。
答
而不是使用SQL查询来执行选择。请考虑使用Linq查询来达到相同的结果。
例如,如果你想选择了行并取得编号的primary_color:
var rowData = mSqlConnection.Table<BrandingInfoModel>()
.FirstOrDefault(i => i.id == 123);
if (rowData != null)
{
return rowData.primary_color;
}
分享你的'数据'表结构 –
如果KEY是你想要选择的项目的PK,那么你的SQL语法是不正确的。 – Jason
Query方法的通用参数指定要为每行创建的对象的类型(您告诉它使用字符串)。它可以是你的表类或其公共属性**匹配查询返回的列的任何其他类。您不能将列值强制为字符串对象,因为它没有公共属性(至少不使用Query方法)。另请注意,您正在运行的查询有可能返回多行。我不知道你为什么试图在行列表上调用ToString。 –