- PR -

相対パスの指定について

投稿者投稿内容
C#初心者
常連さん
会議室デビュー日: 2005/12/22
投稿数: 24
投稿日時: 2006-02-12 17:35
C#で、Windowsプログラムを作成中です。

oleDbAdapterを利用しデータベースと接続しています。
絶対パスなため、当然ながらフォルダを移動すれば接続できなくなり、すごく不便です。他の人のパソコン内でも利用する必要があります。

C:\Documents and Settings\C#初心者\デスクトップ\新システム\DB\データベース.mdb
と指定しています。

初歩的ですみませんが、相対パスでの接続の仕方を教えてください。お願いします。
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2006-02-12 17:40
お世話になります。

マイ ドキュメント なら、System.Environment.SpecialFolder.Personal
でいけると思いますが。
Environment.SpecialFolder 列挙体
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-02-12 17:49
なんか、
> C:\Documents and Settings\C#初心者\デスクトップ\新システム\DB\データベース.mdb
は共有フォルダ配下であって、自分のPCからはそのパスでよいけど、
他人のPCからはネットワークパスになるからというとこでしょうか?

同じ exe をつかっていないのならば、mdb の位置を指定させるしかないですね。
(よくあるツールの 実行ファイルのパス を入力させるヤツみたいなの)
それか、設定用のXMLファイル(iniファイルでも良いが)を個人個人で用意させて、
それの情報から mdb の位置を決定するとか。

同じ exe(共有フォルダ上のexe)を複数人が使っているのならば、その exe と mdb との
パス関係で 相対パスにするしかないですね。
(こちらの場合は exe の位置がわからないので解答できないかと、)

[ メッセージ編集済み 編集者: Blue 編集日時 2006-02-12 17:57 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-12 18:22
ユーザー単位で設定するものであれば、各ユーザーの Application Data。
アプリケーション全体であれば、実行されるディレクトリと同位置かそれより下の階層。

特に理由がなければ、.NET 的にはこれが普通だと思います。
今回は DB なので外部ファイル依存にする必要もないと思います。

# My Documents などは NG かな。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-02-12 18:53
 Application グローバル変数に、ApplicationData だったか、アプリケーション用のデータを入れるためのパスをとるプロパティがあります。システムドライブの、Documents and Settings/ユーザ名/ApplicationData/会社名/アセンブリ名/バージョン番号 がとれます。アセンブリ名じゃなく、アセンブリ属性で指定したプロダクト名だったかも。
 ApplicationData は、hidden 属性がついています。

〆 written by Jitta on 2006/02/12
C#初心者
常連さん
会議室デビュー日: 2005/12/22
投稿数: 24
投稿日時: 2006-02-12 19:39
説明が悪くてすみません。

つまり、ソース、exe、mdbが入っている、「新システム」フォルダがあります。
このフォルダを、相手のパソコンに移すだけで利用できるようにしたいと思っています。

作品提出みたいな感じだと思っていただければいいと思います。よろしくお願いします。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-02-12 19:55
引用:

Jittaさんの書き込み (2006-02-12 18:53) より:
 Application グローバル変数に、ApplicationData だったか、アプリケーション用のデータを入れるためのパスをとるプロパティがあります。



Application.UserAppDataPath かな
でもこれ普通にインテリセンスにでてきますね

似たようなのに
Application.CommonAppDataPath
っていうのもありますね
こっちだと各ユーザでなくAllUsersになります
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-02-12 20:03
引用:

C#初心者さんの書き込み (2006-02-12 19:39) より:

つまり、ソース、exe、mdbが入っている、「新システム」フォルダがあります。
このフォルダを、相手のパソコンに移すだけで利用できるようにしたいと思っています。


System.Windows.Forms.Application
クラスのメンバを調べるとそれらしいものがあると思います。

スキルアップ/キャリアアップ(JOB@IT)