@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

データソース構成ウィザードでテキストファイルの読み込みをしたい

1
投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2007/04/09
投稿数: 21
投稿日時: 2007-11-30 13:00
VisualStudio2005でデータソースを追加するときは
データソース構成ウィザードを開き、「データ接続の選択」で「新しい接続」etc・・・という順番でしますよね。
で、接続できたとき接続文字列は
  Data Source=sampleDS; Initial Catalog=sampleDB; Integrated Security=True
のようになると思います。

このときこの接続文字列をテキストファイルで読み込むようにできないのでしょうか?

定義したデータセット内TableAdapterの、ConnectionStringを見ると全て上記の接続文字列で接続しているようですので、これらを全てテキストファイルを読み込むように指定できる様にしたいのですが。


調べても構成ウィザードでテキストファイルを読み込む方法がわかりませんでしたので
ご存知の方いらっしゃいましたらぜひお教え下さい。

さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2007-11-30 15:16
さかもとと申します。

「テキストファイルで読み込む」というのは何を指していますか?

例えば、設定ファイル.txt というテキストファイルが外部にあって、接続文字列をそこで管理しているということでしょうか?

ウィザードが終了した後にプロジェクト内にapp.config(web.config)というファイルができているかと思います。ウィザードで読みこまれるのはこのファイル内の接続文字列になると思いますが、app.configを使わずに何か別のテキストファイルを読み込む、ということでしょうか?


_________________
------------------------------------------
拝啓、さかもとと申します♪
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2007-11-30 15:33
引用:

未記入さんの書き込み (2007-11-30 13:00) より:

このときこの接続文字列をテキストファイルで読み込むようにできないのでしょうか?


ConnectionStringはアプリケーション設定ファイル(.config)というテキストファイルに保存されているわけだが。

引用:

定義したデータセット内TableAdapterの、ConnectionStringを見ると全て上記の接続文字列で接続しているようですので、これらを全てテキストファイルを読み込むように指定できる様にしたいのですが。


やりたいことがよく分からないのですが、
別々のアセンブリで、同一のConnectionStringを使用しているので共通化したい
ってことで、おk?

もしそうなら、アプリケーション設定は外部の別のファイルからインクルードすることが可能です。

方法はプロジェクト内にapp.configというファイルがあるはず(一度ビルドすれば自動的に作られるはず)なので、
app.configを開き、
コード:
<ConnectionString>
...
</ConnectionString>


をコピーして、そのまま別のファイルに貼り付け、保存します。

次に、すべてのアセンブリに対して、app.configのConnectionStringを以下のように書き換えます。
コード:
<ConnectionString configSource="外部ファイルへのパス" />


# カレントディレクトリに置くなら、ファイル名で可
ポイントはconfigSource="外部ファイルへのパス"

これで、ConnectionStringを共通化することが出来ます。

詳細についてはセクションの要素によって継承される全般属性(microsoft.com)を呼んで勉強して。

あと過去ログ(atmarkit.co.jp)
未記入
常連さん
会議室デビュー日: 2007/04/09
投稿数: 21
投稿日時: 2007-11-30 16:28
さかもとさん、かずくんさん返答ありがとうございます。

「テキストファイルで読み込む」というのは何を指していますか?というのはまさに

引用:


例えば、設定ファイル.txt というテキストファイルが外部にあって、接続文字列をそこで管理しているということでしょうか?




ということです。さかもとさんが仰られる通りですが、例えば
"C:\\プロジェクトフォルダ" 内に "設定ファイル.txt" というのがあって、接続文字列はそこで管理しているものを指します。


引用:


ウィザードが終了した後にプロジェクト内にapp.config(web.config)というファイルができているかと思います。
ウィザードで読みこまれるのはこのファイル内の接続文字列になると思いますが、
app.configを使わずに何か別のテキストファイルを読み込む、ということでしょうか?




app.configを使わずに何か別のテキストファイルを読み込む場合ですと、
ウィザードを使わずコードで接続、DataSetやTableAdapterの設定をすることになると思いますので
その手間を省くためにウィザードは必須だと考えています。


要は結果的に一つのところで管理・設定できれば良いので、app.configを使って編集できるならそれでも良いと考えています。
なのでかずくんさんの仰る、

引用:

別々のアセンブリで、同一のConnectionStringを使用しているので共通化したい



というのが私のやりたかったことです。知識不足、説明不足で申し訳ありません。
ひとまず、かずくんさんの教えてくださった方法でやってみます。結果は後ほど返答しますね。
未記入
常連さん
会議室デビュー日: 2007/04/09
投稿数: 21
投稿日時: 2007-12-01 19:27
どうもうまくできません。

引用:

app.configを開き、
コード:

<ConnectionString>
...
</ConnectionString>


をコピーして、そのまま別のファイルに貼り付け、保存します。

次に、すべてのアセンブリに対して、app.configのConnectionStringを以下のように書き換えます。
コード:

<ConnectionString configSource="外部ファイルへのパス" />


# カレントディレクトリに置くなら、ファイル名で可
ポイントはconfigSource="外部ファイルへのパス"

これで、ConnectionStringを共通化することが出来ます。



という事でしたので、app.configを開き

   <?xml version="1.0" encoding="utf-8" ?>
   <connectionStrings>
      <add name="SampleSystem.My.MySettings.HikariConnectionString"
      connectionString="Data Source=SampleDS;Initial Catalog=SampleDB;Integrated Security=True"
      providerName="System.Data.SqlClient" />
   </connectionStrings>


このコードをメモ張に貼り付け、拡張子をxmlに変えてカレントディレクトリに保存。
(名前は ConnectionStrings.xml です。)app.config内の記述は

   <!--コメントにしています-->
     <!--<connectionStrings>
     <add name="SampleSystem.My.MySettings.HikariConnectionString"
     connectionString="Data Source=SampleDS;Initial   Catalog=SampleDB;Integrated Security=True"
     providerName="System.Data.SqlClient" />
       </connectionStrings>-->

   <connectionStrings configSource="C/ConnectionStrings.xml" />

に変えてデバッグしてみましたが、
'System.Data.SqlClient.SqlConnection' のタイプ初期化子が例外をスローしました。
とエラーになります。

拡張子xmlをconfigに変更したりもしてみましたが、同様のエラーが起こります。
何が原因なのでしょうか?




かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2007-12-03 09:51
引用:

未記入さんの書き込み (2007-12-01 19:27) より:

コード:
   <?xml version="1.0" encoding="utf-8" ?> 
       <connectionStrings>
              <add name="SampleSystem.My.MySettings.HikariConnectionString"
                  connectionString="Data Source=SampleDS;Initial Catalog=SampleDB;Integrated Security=True"
                  providerName="System.Data.SqlClient" />
       </connectionStrings>  



このコードをメモ張に貼り付け、拡張子をxmlに変えてカレントディレクトリに保存。
(名前は ConnectionStrings.xml です。)app.config内の記述は



コード:
<?xml version="1.0" encoding="utf-8" ?> 


これを取り除いた場合、結果が変わりますでしょうか?

引用:

コード:
   <connectionStrings configSource="C/ConnectionStrings.xml" />


に変えてデバッグしてみましたが、
'System.Data.SqlClient.SqlConnection' のタイプ初期化子が例外をスローしました。
とエラーになります。


パスの指定が間違ってるような?
コード:
C:\\ConnectionStrings.xml


それとも.net frameworkがよきに計らってくれるのかな?

私の場合、コンパイル後、切り出したファイルがアプリケーション構成ファイル(.exe.config)と同じフォルダに配置されるようにしているため、気にしていなかったのですが、

接続先の構成をひとつのファイルにまとめたい(vsug.jp)より引用
引用:

2.configSource属性で参照できるファイルは、構成ファイルと同じディレクトリか、サブディレクトリに限定されてしまうようである。


との事らしいので、ConnectionStrings.xmlの配置先を変えてみるとうまくいくかもしれません。

それ以前に、Setting.settingの内容を変更したときにConnectionStrings.xmlにその内容が反映されてますか?



1

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