2011-07-03 31 views
0

Microsoft Visual Studio .NET 2008を使用してデスクトップアプリケーションを作成しています。データベースとして.sdfファイルを使用しています。私の問題は、私が自分のレコードを変更している(新規、削除済み、更新済みを追加する)と、アプリケーションが実行されている間だけ変更が反映されるということです。アプリケーションを再起動すると、変更が反映されません。データベースファイル.sdfがアプリケーションの終了後に更新されない

私は、デフォルトの接続文字列を使用しています

string conString = Properties.Settings.Default.DataConnectionString; 
SqlCeConnection con = new SqlCeConnection(conString); 
con.Open(); 

このデータベースのためのVisual Studioによって与えられた値は

データソース=は| DataDirectoryの| \ Data.sdf

私は何をしているのか分かりませんが、すべてのクエリが実行されています。

答えて

0

は、あなたが「コピーalways」にdatabase.sdf

現在の接続文字列とフィールドアプリケーションの「出力ディレクトリにコピー」を設定していない、変更することはできませんし、各呼び出される場合に発生ソリューションを探ります時間は、データベースへの接続に

さようなら

+0

、デフォルトでは「新しい場合はコピー」に設定されている「出力ディレクトリにコピーします。」..正しい.. – vince

3

あなたはVS.NETから実行するたびに、それはあなたのbinフォルダの中に溶液からSDFファイルをコピーし、そして最後からあったのbin/SDFファイルを上書きされます走るsdfファイルのプロパティを "copy always"ではなく "copy if newer"に変更します。

+0

@Jasonが...デフォルトでは、それがあるということです'Copy if newer'に設定してください.. – vince

+0

「コピーしない」オプションに設定してください(それが正確に呼び出されているかどうかはわかりません)。それがうまくいく場合は、dbスキーマを更新するたびに変更する必要があります。 – Jason

+0

これは現時点で問題を解決すると思う..私はもう少し働かなければならないし、これが正しい答えかどうかを知ってもらう必要がある...それはまたいくつかのエラーを与えた..私はデータベースをデバッグフォルダからbin/debugフォルダーそれ以外の場合は、それ自体ではコピーされません...私はすぐに最終結果についてお知らせします..あなたの助けをありがとう – vince

1

アプリケーションフォルダを確認し、データベースファイルが存在するbinファイルから呼び出していることを確認してください。

何かのように:

string startPath = Application.StartupPath; 


var filepath = startPath + "\\" + "Database.sdf"; 

private SqlCeConnection conn = new SqlCeConnection("Data Source={0};Persist Security Info=False;",filepath); 

よろしく

関連する問題