C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.34526 の関連記事表示

<< 0 >>
■34526  プロジェクト内に.mdbは設置できますか?
□投稿者/ hs -(2009/03/31(Tue) 20:04:10)

    分類:[VB.NET/VB2005 以降] 

    パッケージのソフトの中に.mdbのデータベースを設置したいのですが、そのような事は可能でしょうか?
    もし可能であればご教授お願いいたします。
親記事 /過去ログ60より / 関連記事表示
削除チェック/

■34531  Re[1]: プロジェクト内に.mdbは設置できますか?
□投稿者/ 魔界の仮面弁士 -(2009/03/31(Tue) 21:38:53)
    No34526 (hs さん) に返信
    > パッケージのソフトの中に.mdbのデータベースを設置したいのですが、そのような事は可能でしょうか?

    プロジェクトにファイルを含めた後、[ソリューション エクスプローラ]で
    そのファイルを選択した状態で、[プロパティ]グリッドから、
     ビルド アクション = コンテンツ
     出力ディレクトリにコピー = 常にコピーする
    を設定してみては如何でしょう。

    ただし、インストール先のフォルダは、必ずしも、実行ユーザーにとって書き込み可能な場所とは
    限りませんので、EXE のフォルダに配置された mdb をそのまま開くのではなく、たとえば
    初回使用時には、そのファイルを個人フォルダにコピーしてから使用するなどの対処が
    必要になるかもしれません。
記事No.34526 のレス /過去ログ60より / 関連記事表示
削除チェック/

■34537  Re[2]: プロジェクト内に.mdbは設置できますか?
□投稿者/ hs -(2009/03/31(Tue) 23:14:22)
    ご回答ありがとうございます。
    ご教授いただいたとおりプロジェクト内に.mdbを追加できました!

    ところで現在、プロジェクトに追加した.mdbへのコネクションですが、配布時に各ユーザーが必ずしもC:\Program Filesへインストールするとは限らないと思うのですが、配布したプロジェクト内の.mdbを参照できるような記述はどうなるのでしょうか?

    Dim Cn As Oledb.OledbConnection = New Oledb.OledbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data _ Source="C:\Documents and Settings\PCName\デスクトップ\APName\APName\○○○.mdb";Persist Security Info=True")

    のようにフルパスみたいなコネクションだと間違えなく問題が生じるはずです。

    これを常に.exeファイル(配布したアプリ)のフォルダ(カレントフォルダ)から参照するようなコネクションの記述があればそれもご教授願えますでしょうか?

    よろしくお願いします。
記事No.34526 のレス /過去ログ60より / 関連記事表示
削除チェック/

■34541  Re[3]: プロジェクト内に.mdbは設置できますか?
□投稿者/ 魔界の仮面弁士 -(2009/04/01(Wed) 00:37:50)
    No34537 (hs さん) に返信
    > 配布したプロジェクト内の.mdbを参照できるような記述はどうなるのでしょうか?

    さしあたり、My.Application.Info.DirectoryPath あたりから辿ってみては如何でしょう。

    ClickOnce のオンライン実行がありうる場合は、サーバーから
    mdb をダウンロードして利用する事も検討せねばならないかも知れませんが。
記事No.34526 のレス /過去ログ60より / 関連記事表示
削除チェック/

■34645  Re[4]: プロジェクト内に.mdbは設置できますか?
□投稿者/ hs -(2009/04/04(Sat) 16:27:08)

    > さしあたり、My.Application.Info.DirectoryPath あたりから辿ってみては如何でしょう。
    >
    お蔭様で、プロジェクト内の.mdbを参照する事が出来ました。ありがとうございます。

    ところが、新たな問題が生じてしまいました。
    INSERTやDELETEを実行した際、DataGridViewには結果が正常に反映されているのですが、肝心の.mdbの中身が更新されていません。
    これは、Tempファイルのようなものが裏で出来ていてその値がDataGridViewに反映されているのだと思うのですが、.mdbを確実に更新させ、更新させた直後のデータをDataGridViewに反映させたいのですが、どのような記述をしてあげればよいのでしょうか?

    たびたび申し訳ありませんが宜しくお願いします。
記事No.34526 のレス /過去ログ60より / 関連記事表示
削除チェック/

■34648  Re[5]: プロジェクト内に.mdbは設置できますか?
□投稿者/ Azulean -(2009/04/04(Sat) 21:01:36)
    2009/04/04(Sat) 21:03:13 編集(投稿者)

    下記のようなアドバイスが既にありましたが、検討されたのでしょうか?

    No34531 (魔界の仮面弁士 さん) に返信
    > ただし、インストール先のフォルダは、必ずしも、実行ユーザーにとって書き込み可能な場所とは
    > 限りませんので、EXE のフォルダに配置された mdb をそのまま開くのではなく、たとえば
    > 初回使用時には、そのファイルを個人フォルダにコピーしてから使用するなどの対処が
    > 必要になるかもしれません。

    例えば、VistaのProgram Filesとかファイルの作成や更新が制限されますが、そういったケースでもないのでしょうか?
    試している環境が異なったとしても、他のユーザに配るときにVistaのProgram Filesにインストールされるというケースは十分考えられるので、アプリケーションと同じフォルダのmdbファイルは更新できないものとして作ることを考えて下さい。

    -----
    他の要因があるとすれば、mdbファイルへの適用処理が別途必要かどうかですが、データベース周りは扱っていないので、外しているかもしれません。
記事No.34526 のレス /過去ログ60より / 関連記事表示
削除チェック/

■34651  Re[5]: プロジェクト内に.mdbは設置できますか?
□投稿者/ 魔界の仮面弁士 -(2009/04/04(Sat) 23:50:48)
    No34645 (hs さん) に返信
    > INSERTやDELETEを実行した際、DataGridViewには結果が正常に反映されているのですが、肝心の.mdbの中身が更新されていません。

    それは配布先での話ですか? それとも開発時の話ですか?

    開発環境だとしたら、「出力ディレクトリにコピー = 常にコピーする」の設定にしていると、
    exe を再作成するたびに、mdb ファイルが、プロジェクトに含めていたバージョンに
    指し戻ることになりますので、デバッグ時にはご注意を。


    もし、それが原因ではないのであれば、JET の遅延書き込みに引っ掛かっている可能性もあるので、
    明示的なトランザクションを組んでいるかどうかを確認してみてください。
    http://www.canalian.com/workshop/access/JetCache.html
記事No.34526 のレス /過去ログ60より / 関連記事表示
削除チェック/

■34663  Re[6]: プロジェクト内に.mdbは設置できますか?
□投稿者/ ちゃっぴ -(2009/04/05(Sun) 10:26:24)
>
    User が出力を行う file は該当の user profile 配下に出力するのが原則です。
    そうしないと他の user から読み取り・変更可能な脆弱性につながります。

    今回の場合、対象の mdb file は user が直接指定することがないでしょうから、%APPDATA% 配下に格納するのが適切でしょう。%APPDATA% の path は System.Environment.GetFolderPath を使って取得できます。
記事No.34526 のレス /過去ログ60より / 関連記事表示
削除チェック/

■34819  Re[7]: プロジェクト内に.mdbは設置できますか?
□投稿者/ hs -(2009/04/10(Fri) 15:43:13)
    No34651 (魔界の仮面弁士 さん)に返信
    >開発環境だとしたら、「出力ディレクトリにコピー = 常にコピーする」の設定にしていると、
    >exe を再作成するたびに、mdb ファイルが、プロジェクトに含めていたバージョンに
    >指し戻ることになりますので、デバッグ時にはご注意を。

    すっかりそのことが頭にありませんでした。危なく無駄な時間を消費することを避けられました。
    ということで、

    No34663 (ちゃっぴ さん) に返信
    > User が出力を行う file は該当の user profile 配下に出力するのが原則です。
    > そうしないと他の user から読み取り・変更可能な脆弱性につながります。
    > 今回の場合、対象の mdb file は user が直接指定することがないでしょうから、%APPDATA% 配下に格納するのが適切でしょう。%APPDATA% の path は System.Environment.GetFolderPath を使って取得できます。

    ちゃっぴさんの方法をとらせていただき今回の質問内容を無事に解決するにいたりました。
    ここにたどり着くまでにすこし遠回りになりましたが良い勉強になりました。
    ホントにありがとうございました。
    また何かありましたらよろしくお願いします。
記事No.34526 のレス /過去ログ60より / 関連記事表示
削除チェック/

■34820  Re[8]: プロジェクト内に.mdbは設置できますか?
□投稿者/ hs -(2009/04/10(Fri) 15:44:01)
    解決済み
記事No.34526 のレス / END /過去ログ60より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -