none
Access型データベースファイルを実行ファイルフォルダ以外に置く方法 RRS feed

  • 質問

  • 「UAC確認ダイアログを出さない方法は」でご質問させていただきましたgirouでございます。先の質問では上手くいったと思ったのですが、再度試してみましたらどうも上手く行っていませんでしたので再度質問させてください。


    Program Filesフォルダにアプリケーションを配置した場合、UACが壁として立ちはだかるため、対象となるファイルをApplicationDataフォルダに作成いたしました。
    具体的に言いますと、Access型データベースを Visual C# Express Edition でGUIで作成(接続の追加でデータベース ファイル名を指定)しているのですが、作成したPCでは上手く行くのですが、他のPCでは動作しません。これは、データベースファイルに接続する際にベタで次のようにパスが固定されてしまっていることに起因するのですが、これを動的に任意に変更することはできないのでしょうか。

    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\XXXX\AppData\Roaming\userData.mdb

    ちなみに、実行ファイルと同一フォルダに作成した場合はこの接続文字列はの部分は|DataDirectory|となっており、環境を変えても上手くいきます。(ただし、Program FilesフォルダではUACの問題が出ます)
    2008年10月25日 12:16

回答

  • なるほど。そういうことですね。以下を参考にしてみて下さい。

     

    スコープがアプリケーションな接続文字列を動的に変更する方法(テスト系データベースと本番系データベースを動的に切り替える方法)
    http://blogs.wankuma.com/trapemiya/archive/2008/03/21/128947.aspx

     

    実際にはk_kazuさんがコメントされているようにして下さい。

     

    #型付データベースは型付データセットの誤りですよね。

    2008年10月26日 1:44
    モデレータ

すべての返信

  • SpecialFolder.ApplicationDataでうまく行きませんでしょうか?

    2008年10月25日 13:17
    モデレータ
  • 回答ありがとうございます。

    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 等も試したのですが、型付データベースの場合、自動でコーディングが行われ、パス指定がXMLファイル等を含め、何箇所にも出てくるのでできなかったものです。今更データベースの変更をするよりも、今は、プログラムフォルダ以外にインストールするのが早道かなと思い始めています。
    2008年10月25日 23:19
  • なるほど。そういうことですね。以下を参考にしてみて下さい。

     

    スコープがアプリケーションな接続文字列を動的に変更する方法(テスト系データベースと本番系データベースを動的に切り替える方法)
    http://blogs.wankuma.com/trapemiya/archive/2008/03/21/128947.aspx

     

    実際にはk_kazuさんがコメントされているようにして下さい。

     

    #型付データベースは型付データセットの誤りですよね。

    2008年10月26日 1:44
    モデレータ
  • 大変お世話になりました。

    セッターを追加したうえで次のようにコーディングしたところ上手く行きました。

     

     XXXX.Properties.Settings.Default.userDataConnectionString2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + toFile;
     (toFileにはターゲットとなるAccessデータベースファイルへのパスです。)

     

    partial class を使った方法はどうも上手くいかなかったので、今度また試してみたいと思います。本当にありがとうございました。

     

    2008年10月26日 12:09
  • こんにちは。中川俊輔 です。

     

    trapemiyaさん、回答ありがとうございます。

     

    girou2さん、フォーラムのご利用ありがとうございます。

    有用な情報と思われたため、trapemiyaさんの回答へ回答済みチェックをつけさせていただきました。

     

    今後ともフォーラムをよろしくお願いします。

    それでは!

    2008年11月7日 9:24