Xamarin检查DB Sqlite中是否存在列

时间:2017-12-29 15:10:02

标签: android sqlite xamarin xamarin.ios

我想要一种简单快速的方法来查看Xamarin中sqlite数据库中是否存在特定名称。我尝试了很多像这样的方法,但要么全部返回true,要么全部返回false。

 public bool Check(string Name)
    {
        try
        {
            using (var connection = new SQLiteConnection(System.IO.Path.Combine(folder, "PictureDB_GM.db3")))
            {
                if (connection.Query<PictureDB>("SELECT * FROM Person Where Name=?", Name) == null)
                    return true;
                else
                    return false;
            }
        }
        catch (SQLiteException ex)
        {
            Log.Info("SQLiteEx", ex.Message);
            return false;
        }
    }

目前,我正在使用它:

        for (int y = 0; y < lstSource.Count; y++)
        {

            if (lstSource[y].Name == view.Resources.GetResourceName(item.ImageResourceId))
            {

                ImageService.Instance.LoadCompiledResource(view.Resources.GetText(Resource.Drawable.Truee)).Into(img_2);

                break;
            }
            else
                ImageService.Instance.LoadCompiledResource(view.Resources.GetText(Resource.Drawable.empty)).Into(img_2);

        }

它可以很好地处理很少的条目,但是如果数据库有超过50个条目,它需要花费很长时间并使应用程序出错并开始破碎。

那么有没有干净的方法或更好的方法呢?

1 个答案:

答案 0 :(得分:0)

使用此

更好的预备
    if(MainActivity.db.selectTablePerson().Where(i => i.Name == view.Resources.GetResourceName(item.ImageResourceId)).FirstOrDefault()==null)
            ImageService.Instance.LoadCompiledResource(view.Resources.GetText(Resource.Drawable.empty)).Into(img_2);
        else
            ImageService.Instance.LoadCompiledResource(view.Resources.GetText(Resource.Drawable.Truee)).Into(img_2);