Windows Phone sqlite全选

时间:2015-10-06 15:01:04

标签: sqlite select windows-phone-8

我在一个名为" CUSTOMER"的表中有一个简单的查询。选择全部。

这是我的表:

public class CUSTOMER : Extension.Shared
{
    [PrimaryKey, Indexed]
    public Guid ID { get; set; }
    [Indexed]
    public string FULL_NAME { get; set; }
    public string PHONE_NO { get; set; }
    //public string PIVA_CF { get; set; }
    public DateTime? MODIFIED_ON { get; set; }

这是给我问题的查询

public List<CUSTOMER> SelectAll()
    {
        SQLiteConnection conn = new SQLiteConnection(DatabasePath());
        return conn.Query<CUSTOMER>("SELECT * FROM CUSTOMER");
    }

每次运行此操作时,查询都会从SQLite.cs文件中返回错误:

if (r != SQLite3.Result.OK) 
{
    throw SQLiteException.New (r, String.Format ("Could not open database file: {0} ({1})", DatabasePath, r));
}

如果大小有用,则此表有近50000条记录。 我有几个表有100000或80000记录的问题。 其他表没有问题,其他查询没问题。

我可以这么说,因为我以为桌子被严重保存了,我一次又一次地安装了桌子,但是我注意到从同一页面我可以毫无问题地调用这个查询,对于所有桌子:

public List<CUSTOMER> SelectByFilter(string Filter)
{
    SQLiteConnection conn = new SQLiteConnection(DatabasePath());
    return conn.Query<CUSTOMER>(string.Format("SELECT * FROM CUSTOMER WHERE FULL_NAME LIKE '{0}%'", Filter));
}

我真的不知道这个错误来自哪里。我不知道Sqlite3的任何大小限制。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

此错误告诉它在路径上找不到数据库给定的隔离存储工具检查数据库存在于该位置还检查您是否在DatabasePAth()方法中引用数据库文件的正确路径,否则请尝试此< / p>

 public List<CUSTOMER> SelectByFilter(string Filter)
{


    string dbpath = System.IO.Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "yourdatabsefilename.db");
//database is in home directory not in any subfolders. then only this code will work

    SQLiteConnection conn = new SQLiteConnection(dbpath);
    return conn.Query<CUSTOMER>(string.Format("SELECT * FROM CUSTOMER WHERE FULL_NAME LIKE '{0}%'", Filter));
}