如何从 xamarin 中的本地数据库中检索字符串值?
How to retrieve string value from local database in xamarin?
Table结构
[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;
}
}
我写了returns根据SELECT查询从本地数据库取值的方法。但它 returns 为空。
而不是使用 SQL 查询来执行 select。请考虑使用 Linq 查询来获得相同的结果。
例如,如果您想要 select 出一行并获得 ID 为
的 primary_color
var rowData = mSqlConnection.Table<BrandingInfoModel>()
.FirstOrDefault(i => i.id == 123);
if (rowData != null)
{
return rowData.primary_color;
}
我试过这种方法
//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;
}
}
它returns 所需的输出。
我的解决方案是创建一个支持 class 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;
Table结构
[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;
}
}
我写了returns根据SELECT查询从本地数据库取值的方法。但它 returns 为空。
而不是使用 SQL 查询来执行 select。请考虑使用 Linq 查询来获得相同的结果。
例如,如果您想要 select 出一行并获得 ID 为
的 primary_colorvar rowData = mSqlConnection.Table<BrandingInfoModel>()
.FirstOrDefault(i => i.id == 123);
if (rowData != null)
{
return rowData.primary_color;
}
我试过这种方法
//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;
}
}
它returns 所需的输出。
我的解决方案是创建一个支持 class 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;