4

I'm using local database to store my data. My code is based on a tutorial: How to create a basic local database app for Windows Phone Everything was right, but I had to add some more data to my database and now when I'm trying to do so I get info "Your phone is low on storage space". Is it possible that my database is too big?

This is how I create my database:

using (TablesDataContext db = new TablesDataContext(TablesDataContext.DBConnectionString))
{
    if (db.DatabaseExists() == false)
    {
       //Create the database
        db.CreateDatabase();
    }
}

And my DataContext:

public class TablesDataContext : DataContext
    {
        // Specify the connection string as a static, used in main page and app.xaml.
        public static string DBConnectionString = "Data Source=isostore:/Customers.sdf";

        // Pass the connection string to the base class.
        public TablesDataContext(string connectionString)
            : base(connectionString)
        { }

        // Specify a single table for the to-do items.
        public Table<CustomerItem> CustomersTable;
        public Table<CategorieItem> CategoriesTable;
        public Table<ProductItem> ProductsTable;
        public Table<CustomerPricesItem> CustomerPricesTable;
    }
4

1 回答 1

0

您确定您的手机有足够的可用存储空间吗?

如果您的手机有足够的可用空间,您可以尝试在连接字符串中添加 Max Database Size 参数。默认情况下,当您第一次创建数据库时,大小设置为 32Mb。包括Max Database Size,您可以指定所需的大小,最大值为 512Mb:

"Data Source='isostore:/Db.sdf'; Max Database Size = 256;"

这样,第一次使用上述连接字符串创建数据库时,它的最大大小设置为 256Mb。

另外,我知道这是另一个问题,但是如果您写入的是大量数据,您可能希望将Max Buffer Size参数添加到连接字符串中,最大值为 5120 (5Mb),它表示存储的数据量在继续写入磁盘之前在内存中......它可以加快您的写入速度:

"Data Source='isostore:/Db.sdf'; Max Database Size = 256; Max Buffer Size = 3072;"

如果您的数据比那个大,可能您需要将其拆分为不同的文件或使用另一个数据库作为 SQLite。

您在数据库中存储什么数据?图片?只有文本...二进制文件...也许有更好的方法来优化数据库大小,如果您将图像存储在数据库字段中,则将图像存储在隔离存储和数据库中的路径可能会更好。

希望这有帮助!

于 2013-08-03T14:23:00.520 回答