質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Q&A

解決済

3回答

3325閲覧

App.configの接続文字列を取得できない

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

0グッド

1クリップ

投稿2022/11/01 12:24

編集2022/11/05 23:45

前提

VisualStadio2022のC#で書いたプログラムからSQLServerに接続するためにApp.configを使用する。

App.configファイルの作成・入手について
Visual Studioのソリューションエクスプローラでプロジェクトを右クリックして、ポップアップメニューを表示させます。メニューの「追加」-「新しい項目の追加」を選んだが、「アプリケーション構成ファイル」が出なかったので、
https://dobon.net/vb/dotnet/programing/appconfigfile.html
を参考に
1.メモ帳などアプリケーションで作った。「App.config」という名前のファイルを作成
または
2.配布された「sample.config」を入手し、「App.config」変えたものを作成

→特に配布されたファイル「sample.config」を入手したことについては確定である。

そのファイルをプロジェクトに追加し(ソリューションエクスプローラへのドラッグ&ドロップ等で追加)、そのファイルをVisual Studioで開く

実現したいこと

C#を使用して、SQLSeverに接続したいです。

発生している問題・エラーメッセージ

C#

1 string test = ConfigurationManager.ConnectionStrings["DB"].ConnectionString;

接続文字列の取得のコードでエラーがでてくる
System.NullReferenceException
HResult=0x80004003
Message=Object reference not set to an instance of an object.

該当のソースコード

C#

1using System.Configuration; 2 3public string GetConnectionString() 4 { 5 //接続文字列の取得(SQL Serverへの接続する情報の取得) 6 string test = ConfigurationManager.ConnectionStrings["DB"].ConnectionString; 7 8 return ConfigurationManager.ConnectionStrings["DB"].ConnectionString; 9 } 10

App.config

<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="DB" connectionString="Data Source = (localdb)\mssqllocaldb; Initial Catalog = TestDatabase; Integrated Security = True" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration>

###エラーについて確かめたこと・問題解決のために試したこと

1.「App.config」が接続できているか確かめるために
接続文字列以外のパラメータである<appSettings>を作成し、実装できるか確認を行う。
デバッグでc#変数conで指定したキーの値を取得で見つからないときはnullを返ってきた。

<appSettings> <add key="ID" value="1002" /> <add key="Name" value="Suzuki" /> </appSettings>

C#

1using System.Configuration; 2 3public string GetConnectionString() 4 { 5 string con = ConfigurationManager.AppSettings["ID"]; 6 7 //接続文字列の取得(SQL Serverへの接続する情報の取得) 8 string test = ConfigurationManager.ConnectionStrings["DB"].ConnectionString; 9 10 return ConfigurationManager.ConnectionStrings["DB"].ConnectionString; 11 }

2.配布されたファイルをそのまま「sample.config」の名前で追加する。
3.「App.config」を「app.config」で追加する。

どれを行っても解決ができなかった。

SQL Server Management StudioによってデータベースをWindows認証で作成しました。

VisualStadio2022ではWindowsフォームアプリをアプリを.NET6.0のFramework で作成している。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/11/01 12:29

何を何で作っているか書いてください。(例: Windows 10 の Visual Studio 2022 で Windows Forms アプリをターゲットフレームワーク .NET Framework 4.8 で作っています・・・とか) https://teratail.com/questions/f0sk9mu5d1islo <=このスレッドは放置ですか? 放置するようだとそのうち誰も答えてくれなくなりますよ。
退会済みユーザー

退会済みユーザー

2022/11/01 13:11

App.configの作成について https://teratail.com/questions/sto1gy4nq0oh8m によって作成しようと考えていたので、なぜ表示されなかったので、 質問に書いたのですが https://dobon.net/vb/dotnet/programing/appconfigfile.html を参考に 1.メモ帳などアプリケーションで作った。「App.config」という名前のファイルを作成しました。 2.配布された「sample.config」を入手し、「App.config」変えたものを作成 については もし、他の人や事業、講座などからApp.configを配布された場合を想定しています。
退会済みユーザー

退会済みユーザー

2022/11/02 00:06

先のスレッド https://teratail.com/questions/02s6ys6t82loqy で「データベースの接続には web.config も app.config も必要ありません。必要なのは接続文字列です」と書きましたが、それは理解できてますか? また、接続文字列が何だか分からなかったということでしたが、それは勉強して分かったのですか?
退会済みユーザー

退会済みユーザー

2022/11/02 02:39

今思い出しましたけど、前のスレッド https://teratail.com/questions/sto1gy4nq0oh8m で、 > WEB.configを作成するために > Visual Studioのソリューションエクスプローラでプロジェクトを右クリックして、メニューの「追加」-「新しい項目の追加」を選び、「新しい項目の追加」ダイアログを表示させる。「アプリケーション構成ファイル」を選んで「追加」ボタンをクリックする。 > そのファイル名「web.config」としてプロジェクトに追加しました。 > しかし、それはapp.configであると指摘された。 ・・・と書きましたよね。 上の質問に、 > 「アプリケーション構成ファイル」が出なかったので、 と書いてありますが、どういうこと?
退会済みユーザー

退会済みユーザー

2022/11/02 12:42

> Visual Studioのソリューションエクスプローラでプロジェクトを右クリックして、メニューの「追加」-「新しい項目の追加」を選び、「新しい項目の追加」ダイアログを表示させる。「アプリケーション構成ファイル」を選んで「追加」ボタンをクリックする。 は自分でGoogleで検索し調べて分かった方法のことです。 また、接続文字列のconfigファイル内の構成の仕方はわかりませんが、 接続文字列がデータベースに接続するための情報であることがわかりました。
退会済みユーザー

退会済みユーザー

2022/11/02 12:48

その後も、sample.configというファイル名のまま使えないかと考えて https://devlights.hatenablog.com/entry/20110203/p1 を参考に特定のファイルとして読み込むことをしましたが System.NullReferenceException HResult=0x80004003 Message=Object reference not set to an instance of an object. が出てきた。 そもそも特定ファイルを読み込む方法はダメでしたか? そこのファイルで接続文字列を取得することをしましたが、
退会済みユーザー

退会済みユーザー

2022/11/02 23:48 編集

> は自分でGoogleで検索し調べて分かった方法のことです。 そういう風には読めない。日本語からおかしいですよ。そこだけでなくいろいろと。日本語が得意でない方? であれば、そう言ってもらえば、それなりに補完なりして読みますけど。
退会済みユーザー

退会済みユーザー

2022/11/02 23:49

> sample.configというファイル名のまま使えないかと考えて そういうことをする前に、 > メニューの「追加」-「新しい項目の追加」を選んだが、「アプリケーション構成ファイル」が出なかった ・・・ということは普通はないし、そうだったとしても、 > 1.メモ帳などアプリケーションで作った。「App.config」という名前のファイルを作成 > そのファイルをプロジェクトに追加し ・・・で普通は問題ないはずなので、普通ではないのは何故かを調べてそれに対処するのが先だと思いますけど。
退会済みユーザー

退会済みユーザー

2022/11/03 23:58

質問者さん、その後無言ですが、まだやる気が残っているなら、上のコメントに書いたことをよく調べて結果を書いてください。
guest

回答3

0

ベストアンサー

一度、VisualStadio2022をアンインストールして
再度、インストールを行いました。

その後、回答に出してくれた
VS2022 の以下のテンプレートで .NET 6.0 の Windows Forms アプリを作成。
の方法でアプリケーション構成ファイルを作成することができました。

投稿2022/11/05 01:04

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/11/05 14:45

そういうのは自己解決とは言わないよ。自己解決と言えるのは誰からも有用なアドバイスをもらえないで自力で解決したときのみ。
guest

0

メニューの「追加」-「新しい項目の追加」を選んだが、「アプリケーション構成ファイル」が出なかった

・・・ということは普通はないので、まずは普通ではないのは何故かを調べてそれに対処しましょう。もし、質問者さんの環境固有の問題(ファイルが壊れているとか)があると、その状態で先に進めても意味がないと思われますので。

普通はどうなるかを以下に書いておきますので、質問者さんも同じことをしてどうなるか試してみてください。

VisualStadio2022ではWindowsフォームアプリをアプリを.NET6.0のFramework で作成している。

とのことなので、VS2022 の以下のテンプレートで .NET 6.0 の Windows Forms アプリを作成。

イメージ説明

プロジェクト作成直後は App.config ファイルは存在しないので、「ソリューションエクスプローラー」のプロジェクト名を右クリックして、[追加(D)]⇒[新しい項目(W)...]をクリック、「新しい項目の追加」ダイアログで「アップケーション構成ファイル」を選んで App.config を追加。

イメージ説明

質問者さんの環境では「アプリケーション構成ファイル」が出なかったそうですが、見る場所が違うのでは? 「C# 個の項目」を見てください。

上の操作で App.config 作成直後の内容は以下の通り。

イメージ説明

これに、質問にあった接続文字列のコードをコピペすれば、

イメージ説明

質問のコードで接続文字列を取得できます。

イメージ説明

投稿2022/11/04 06:53

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

アプリケーション: "XXX.exe" と ("sample.config"を改名した)"XXX.exe.config" とを同じdir.に置く

ではダメですか?

投稿2022/11/02 01:50

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/11/02 02:20

> メニューの「追加」-「新しい項目の追加」を選んだが、「アプリケーション構成ファイル」が出なかった ・・・ということは普通はないし、そうだったとしても、 > 1.メモ帳などアプリケーションで作った。「App.config」という名前のファイルを作成 > そのファイルをプロジェクトに追加し ・・・で普通は問題ないはずなので、普通ではないのは何故かを調べてそれに対処するのが先だと思いますけど。
episteme

2022/11/02 02:27

僕もそう思う。プロジェクトに追加された App.config は build時に ~.exe.config にコピーされるハズなんよね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問