C# ウィンドウ フォーム アプリで生成されたデータを保存する必要があります。サービスベースのデータベースを使用し、必要なテーブルを作成してから、linq を使用してこれらのテーブルに値を挿入しました。実際にそれを使用してデータを保存しましたが、デバッグ後にすべてのデータが消去されていることがわかりました。実行時に指定した値が見つかりませんでした。誰かがそれを解決するのを手伝ってくれますか? データを保存するためのローカル データベースが必要です。クライアント システムで SQL SERVER を使用しない Win フォーム アプリを作成しています。
3 に答える
User Instance と AttachDbFileName=のアプローチ全体に欠陥があります - せいぜい! .mdf
Visual Studio でアプリを実行すると、ファイルが (App_Data
ディレクトリから出力ディレクトリ (通常.\bin\debug
はアプリが実行される場所) に) コピーされ、ほとんどの場合、問題なく動作しますが、間違ったINSERT
ものを見ているだけです。最後にmdfファイル!
このアプローチに固執したい場合は、myConnection.Close()
呼び出しにブレークポイントを設定してから、 .mdf
SQL Server Mgmt Studio Express でファイルを調べてください。データがそこにあることはほぼ確実です。
私の意見では、本当の解決策は
SQL Server Express をインストールします (とにかく、既に完了しています)。
SQL Server Management Studio Express をインストールする
SSMS Expressでデータベースを作成し、論理名を付けます (例:
YourDatabase
)論理データベース名(サーバー上でデータベースを作成したときに指定) を使用して接続し、物理データベース ファイルとユーザー インスタンスをいじらないでください。その場合、接続文字列は次のようになります。
Data Source=.\\SQLEXPRESS;Database=YourDatabase;Integrated Security=True
そして、それ以外はすべて以前とまったく同じです...
App.Config ファイルで、パスをローカル DB パスに変更します。
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename= C:\Users\Gerry\documents\visual studio 2013\Projects\DatabaseLocalApplication\DatabaseLocalApplication \Customers.mdf;Integrated Security=True"
これにより、保存操作が正しいデータベースに送信されます。この文字列を取得するには、データベースをクリックし、フル パス プロパティのエントリをコピーします。
次に、データベースの [出力ディレクトリへのコピー] を [コピーしない] に設定します。
これと似たようなことを経験しましたが、同じかもしれません。を使用すると、データベースのコピーが に保存され\bin\Debug\
ますData Source=|DataDirectory|\mydatabase.mdf
。デバッグ モードでは、データはこのコピーに保存されます。
これは、データベース ファイルへのフル パス (例: C:\xxxx\yyy\mydatabase.mdf) を指定すると解決できますが、これは移植可能ではありません。これがあなたが望んでいたものであることを願っていますか?