[ad_1]
Visual C#2008 Express をフロント エンドとして、Microsoft Access 2010 をバック エンドとして使用して、交通機関の発券システムを開発しました。
アプリケーションは、現在 Access データベースにあるすべてのデータを保存している開発用 PC で正常に動作し、最終的に領収書を出力しますが、開発用 PC で動作するようにデータベースが正常に機能している別のコンピューターでこのアプリケーションを正常に実行する方法が問題です。
アプリケーションの実行時にアプリケーションをパブリッシュして別のコンピューターにデプロイすると、データベース パスが見つからないことを示すエラーがスローされます。
この問題の解決に関して、深刻な助けが必要です。
私が試したこと:
connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\MY CLASS\Downloads\good work\new work\MDIFORM\busdata.accdb; Persist Security Info=False;";
解決策 1
データベースが適切なフォルダーにコピーされていることを確認する必要があります。
データベースを Visual Studio プロジェクトに含めた (つまり、解決策 エクスプローラーに表示されている) 場合は、ファイルをクリックして[プロパティ]ウィンドウに移動し、設定を変更できます。 Copy to Output Directory
「常にコピー」に。
そうすれば、データベースはプロジェクトの一部としてデプロイされます。
または、展開スクリプトのステップとしてファイルをコピーします。ターゲット PC にフォルダーを作成する必要がある場合があります。 これを簡単にするには、接続文字列を App.Config ファイルに移動します (そして、それが Copy Always
それも)
または、ターゲット PC が接続されているネットワーク ドライブにデータベースを保存します (ただし、Access では推奨されません)。
解決策 2
アプリケーションがその特定の場所にデータベースをインストールしない限り (これはありそうもなく、良い考えでもありません)、データベース ファイルを見つけることができません。 試行した場合、アプリを実行しているユーザーがフォルダーへのアクセス許可を自動的に持っている可能性は低いため、見つけることができない可能性が非常に高くなります (彼のユーザー名がたまたま「MY CLASS」でない限り)。
ここを参照してください: データはどこに保存すればよいですか?[^] – それを保管するためのより良い場所をいくつか提案し、それらにアクセスする方法を示します!
解決策 3
「ネットワーク化されたアプリとデータベース」のレッスンをスキップしたようです。
問題は、開発用 PC のローカル ディスクへのデータベース パスをハードコーディングしたことです。
データベースはサーバー上にある必要があります。
解決策 4
「C:\Users\MY CLASS\Downloads\good work\new work\MDIFORM」
上記のパスを |DataDirectory| に置き換えます。 プロジェクトのすべてのフォームで。
以下を確認してください。
connection.ConnectionString = @”Provider=Microsoft.ACE.OLEDB.12.0;データ ソース=|DataDirectory|\busdata.accdb;
Persist Security Info=False;”;
[ad_2]
コメント