【问题标题】:Select string value from database with sqlite使用 sqlite 从数据库中选择字符串值
【发布时间】:2019-10-26 04:42:41
【问题描述】:

我有问题。我正在尝试从我的数据库中获取一个值(字符串)。这是我为获取值而调用的代码:

public string SelectValueFromTableSettings(string name)
{
    string folder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
    try
    {
        using (var connection = new SQLiteConnection(System.IO.Path.Combine(folder, "Settings.db")))
        {
            return connection.Query<SettingDb>("SELECT Value FROM SettingDb WHERE Name=?", name).ToString();
        }
    }
    catch (SQLiteException ex)
    {
        Log.Info("SQLiteEx", ex.Message);
        return null;
    }
}

下面是给变量赋值的代码:

string SwitchValue = MainActivity.db.SelectValueFromTableSettings(mItems[position].Name);

我应该得到一个像 Nick 或 Steve 这样的值,但我得到的是这个值:

System.Collections.Generic.List`1[CryptoCurrencies.SettingDb]

我做错了什么?

【问题讨论】:

  • 不是枚举connection.Query&lt;SettingDb&gt;("...")的结果,而是调用ToString()connection.Query&lt;SettingDb&gt;() 返回List&lt;SettingDb&gt;。因为List&lt;T&gt; 没有合理的字符串化,所以它只有默认的ToString(),它返回GetType().FullName 或其他。相反,遍历列表。
  • 那我该怎么办?
  • 遍历查询返回的列表。看看里面有没有东西。
  • 当您在查询结果上调用ToString() 时,您将获得结果类的名称,它是一个设置列表。对列表中的第一个数据使用FirstOrDefault() 而不是ToString(),并使用SettingDb 属性来获得所需的结果。
  • 请您发布 SettingsDb 类。

标签: c# sqlite xamarin.android android-sqlite


【解决方案1】:

您正在返回一个对象列表。

connection.Query<SettingDb>("SELECT Value FROM SettingDb WHERE Name=?", name).FirstOrDefault().YourProperty.ToString();

或者,简单地返回对象:

public SettingDB SelectValueFromTableSettings(string name)
{
    string folder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
    try
    {
        using (var connection = new SQLiteConnection(System.IO.Path.Combine(folder, "Settings.db")))
        {
            return connection.Query<SettingDb>("SELECT Value FROM SettingDb WHERE Name=?", name).FirstOrDefault();
        }
    }
    catch (SQLiteException ex)
    {
        Log.Info("SQLiteEx", ex.Message);
        return null;
    }
}

然后访问所需的属性。

【讨论】:

  • 谢谢,这对我帮助很大
猜你喜欢
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
  • 2023-04-11
  • 2017-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
相关资源
最近更新 更多