使用本地数据库时存储空间不足错误

本文关键字:存储空间不足 错误 数据库 | 更新日期: 2023-09-27 17:57:02

我正在使用local database来存储我的数据。我的代码基于教程:如何为 Windows Phone 创建基本的本地数据库应用程序 一切都很好,但我不得不向我的数据库添加更多数据,现在当我尝试这样做时,我得到的信息"你的手机存储空间不足"。我的数据库是否可能太大?

这是我创建数据库的方式:

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

而我的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;
    }

使用本地数据库时存储空间不足错误

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

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

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

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

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

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

如果你的数据更大,也许你需要把它拆分在不同的文件中,或者使用另一个数据库作为SQLite。

您在数据库中存储了哪些数据?图像?只有文本...二进制文件...也许有更好的方法来优化数据库大小,如果您将图像存储在数据库字段上,也许最好将图像存储在独立存储中,将路径存储在数据库中。

希望这个帮助!