4

私はlocal database自分のデータを保存するために使用しています。私のコードはチュートリアルに基づいています: How to create a basic local database app for 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;
    }
4

1 に答える 1

0

お使いの携帯電話に十分な空き容量がありますか?

電話に十分な空き容量がある場合は、接続文字列に Max Database Size パラメーターを追加してみてください。デフォルトでは、最初にデータベースを作成するとき、サイズは 32Mb に設定されます。最大データベース サイズを含めて、最大値 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 として使用する必要があります。

データベースに保存しているデータは何ですか? 画像?テキストのみ...バイナリファイル...データベースのサイズを最適化するより良い方法があるかもしれません.dbフィールドに画像を保存している場合は、画像を分離ストレージに保存し、パスをdb.

この助けを願っています!

于 2013-08-03T14:23:00.520 に答える