Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么在Xamarin表单中,select from sqlite db显示错误“指定的强制转换无效”?_C#_Sqlite_Xamarin.forms - Fatal编程技术网

C# 为什么在Xamarin表单中,select from sqlite db显示错误“指定的强制转换无效”?

C# 为什么在Xamarin表单中,select from sqlite db显示错误“指定的强制转换无效”?,c#,sqlite,xamarin.forms,C#,Sqlite,Xamarin.forms,通过SQLite数据库从中获取单个值,但得到错误System.InvalidCastException:“指定的强制转换无效。” 我只需要select结果的第一个值,尝试了first和ElementAtOrDefault0,但发生了相同的情况 尝试分配变量IDPromoMainPage时捕捉到错误,而不是在此之前 基本上,我是这样称呼这个值的: private void GetPromoLocal() { try {

通过SQLite数据库从中获取单个值,但得到错误System.InvalidCastException:“指定的强制转换无效。” 我只需要select结果的第一个值,尝试了first和ElementAtOrDefault0,但发生了相同的情况

尝试分配变量IDPromoMainPage时捕捉到错误,而不是在此之前

基本上,我是这样称呼这个值的:

private void GetPromoLocal()
        {
            try
            {
                var databasePath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "LocalDB.db3");
                var db = new SQLiteConnection(databasePath);
                IEnumerable<T_Promo> resultado = SELECT_WHERE(db);
                if (resultado.Count() > 0)
                {
                    IDPromoMainPage = Convert.ToInt32(resultado.First()); // ElementAtOrDefault(0));
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
        public static IEnumerable<T_Promo> SELECT_WHERE(SQLiteConnection db)
        {
            return db.Query<T_Promo>("SELECT IDPromo FROM T_Promo");
        }
同样的错误也发生在这里,正好在PisterosLista=resultado.Cast.ToList行

List<Pisteros> PisterosLista = new List<Pisteros>();

public void GetPisterosLocal()
        {
            try
            {
                var databasePath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "LocalDB.db3");
                var db = new SQLiteConnection(databasePath);
                IEnumerable<T_Pisteros> resultado = SELECT_WHERE_Pist(db);
                if (resultado.Count() > 0)
                {
                    PisterosLista = resultado.Cast<Pisteros>().ToList();
                    //Console.WriteLine("content :: " + content);
                    Console.WriteLine("Data :: " + PisterosLista);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
        public static IEnumerable<T_Pisteros> SELECT_WHERE_Pist(SQLiteConnection db)
        {
            return db.Query<T_Pisteros>("SELECT * FROM T_Pisteros");
        }
如果IDPromo列是一个int,那么只需执行以下操作

    IEnumerable<int> resultado = SELECT_WHERE(db);

    public static IEnumerable<int> SELECT_WHERE(SQLiteConnection db)
    {
        return db.Query<int>("SELECT IDPromo FROM T_Promo");
    }
如果IDPromo列是一个int,那么只需执行以下操作

    IEnumerable<int> resultado = SELECT_WHERE(db);

    public static IEnumerable<int> SELECT_WHERE(SQLiteConnection db)
    {
        return db.Query<int>("SELECT IDPromo FROM T_Promo");
    }

不工作,甚至无法从数据库中获取数据,即使是,IDPromo字段是整数第一次是异常,现在我再次尝试并工作。但我使用的是IDPromoMainPage=resultado.First;若要分配值并始终返回0,则值应为1。我将检查您的数据以确保情况属实。而且该查询不保证按任何特定顺序排序,因为应该只存在一行,所以排序问题不存在。插入数据时,我使用的是``private SQLiteAsyncConnection\u conn_conn.InsertAsyncDatosRegistro;`对于这个查询,我使用``var databasePath=System.IO.Path.CombineEnvironment.GetFolderPathEnvironment.SpecialFolder.Personal,LocalDB.db3;var db=new-SQLiteConnectiondatabasePath;`但我不知道这是否是t_promo?类型的okIs DatosRegistro?不起作用,甚至无法从数据库中获取数据,尽管是的,IDPromo字段是integer第一次是例外,现在我再次尝试并工作了。但我使用的是IDPromoMainPage=resultado.First;若要分配值并始终返回0,则值应为1。我将检查您的数据以确保情况属实。而且该查询不保证按任何特定顺序排序,因为应该只存在一行,所以排序问题不存在。插入数据时,我使用的是``private SQLiteAsyncConnection\u conn_conn.InsertAsyncDatosRegistro;`对于这个查询,我使用``var databasePath=System.IO.Path.CombineEnvironment.GetFolderPathEnvironment.SpecialFolder.Personal,LocalDB.db3;var db=new-SQLiteConnectiondatabasePath;`但我不知道那是不是t_promo类型的okIs Datosristro?