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

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

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

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

SQL Server

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

2回答

2434閲覧

テーブルへのデータ格納(ASP.NET・C#・接続文字列の取得)

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

SQL Server

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2021/07/07 01:10

編集2021/07/07 03:00

プログラミング初心者です。

簡単なホテル予約システムを作成しており
テキストボックスやドロップダウンから選択したデータを
ボタンを押すことでテーブルに格納する機能を実装させたいです。

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

接続文字列の取得でエラーが出てしまいます。

オブジェクト参照がオブジェクト インスタンスに設定されていません。
説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。

例外の詳細: System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。

ソース エラー:
行 86: var connectionString = ConfigurationManager.ConnectionStrings["Database1.mdf"].ConnectionString;

該当のソースコード

C#

1 protected void Button4_Click(object sender, EventArgs e) 2 { 3 string name = TextBox2.Text; 4 string address = TextBox4.Text; 5 string tel = TextBox5.Text; 6 string mail = TextBox7.Text; 7 string date = TextBox3.Text; 8 string day = DropDownList6.Text; 9 string people = DropDownList5.Text; 10 string room = DropDownList7.Text; 11 string price = TextBox6.Text; 12 13 // 接続文字列の取得 14 var connectionString = ConfigurationManager.ConnectionStrings["Database1.mdf"].ConnectionString; 15 16 17 // データベース接続の準備 18 using (var connection = new SqlConnection(connectionString)) 19 using (var command = connection.CreateCommand()) 20 { 21 try 22 { 23 // データベースの接続開始 24 connection.Open(); 25 26 // SQLの準備 27 command.CommandText = "INSERT INTO dbo.予約データ (宿泊日, 宿泊日数, 部屋料金,合計, 名前, 住所,電話番号,人数,メール) VALUES" 28 + "(@date, @day, @room,@price ,@name,@address, @tel,@people,@mail)"; 29 30 command.Parameters.Add(new SqlParameter("@宿泊日", date)); 31 command.Parameters.Add(new SqlParameter("@宿泊日数", day)); 32 command.Parameters.Add(new SqlParameter("@部屋料金", room)); 33 command.Parameters.Add(new SqlParameter("@合計", price)); 34 command.Parameters.Add(new SqlParameter("@名前", name)); 35 command.Parameters.Add(new SqlParameter("@住所", address)); 36 command.Parameters.Add(new SqlParameter("@電話番号", tel)); 37 command.Parameters.Add(new SqlParameter("@人数", people)); 38 command.Parameters.Add(new SqlParameter("@メール", mail)); 39 40 // SQLの実行 41 command.ExecuteNonQuery(); 42 } 43 finally 44 { 45 // データベースの接続終了 46 connection.Close(); 47 } 48 49
### 補足情報(FW/ツールのバージョンなど) ASP.NET Web Forms アプリを作成しています。 visual studio2019 .NET Framwork Windows10 LocalDBを使用しております。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/07/07 02:25 編集

・ソースはそのまま記入するとインデントされないので、コードの挿入(<code>のアイコン)で記入してください。 ・エラーが発生した場合は、メッセージ・StackFrame等含めてエラーの内容を詳細に記入してください。(詳細のコピーでクリップボードにコピー出来た筈です) ちなみに、接続文字列について既存の記事は検索しましたか? https://www.google.co.jp/search?q=SqlServer+%E6%8E%A5%E7%B6%9A%E6%96%87%E5%AD%97%E5%88%97
退会済みユーザー

退会済みユーザー

2021/07/07 02:35 編集

何を作っているか(Web Forms? MVC? Razor? その他?)と開発環境(OS, SQL Server のバージョン、.NET Framework or Core のどっちかとそのバージョンなど)を質問欄を編集して追記してください。 (コードを読めばわかるとか言わんでくださいね。あなたが質問の一行目に書けば済むことで、多数の閲覧者が中身を見るという労力をセーブできます)
退会済みユーザー

退会済みユーザー

2021/07/07 02:59

質問から想像するに SQL Server のデーターベースに「予約データ」というテーブルは既に存在するようですが、そうだとすると、どこにどのようにして作ったのですか? 認証方式は何ですか? Visual Studio から接続できるのですか?
退会済みユーザー

退会済みユーザー

2021/07/07 03:02

LocalDBでテーブルは、作成してあります。
退会済みユーザー

退会済みユーザー

2021/07/07 23:08

質問者さん、無言ですが、回答したのでそれに対するフィードバックを返そう。役に立った、立たなかったぐらいはすぐ返せるのでは? 役に立たなかったならどこがダメだったのかを書くとより期待する回答に近いものが出てくるかも。とにかく無言は NG です。
退会済みユーザー

退会済みユーザー

2021/07/08 07:23

申し訳ございません、気が付きませんでした。回答ありがとうございます。ベストアンサーにさせていただきます。
guest

回答2

0

// 接続文字列の取得
var connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

にするころで、テーブルにデータ格納できました。

投稿2021/07/08 07:24

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

接続文字列自体は正しく書けると理解して、ASP.NET Web Forms アプリでコードビハインドの C# のコードからの一般的な接続文字列の取得方法を書きます。

まず、取得する接続文字列は web.config の connectionStrings セクションに保存しておきます。以下のようになります。name が接続文字列名、connectionString が接続文字列そのものです。

イメージ説明

DefaultConnection は VS2019 のテンプレートを使って認証を「個別のユーザーアカウント」でプロジェクトを作ると自動的に web.config に含まれます。NORTHWINDConnectionString というのは後で自分が追加したものです。(前者は LocalDb、後者は SQL Server 2012 のインスタンスで、両方とも Windows 認証です)

コードビハインドの C# のコードからは System.Web.Configuration 名前空間の WebConfigurationManager クラスを利用して以下のように接続文字列を取得できます。

イメージ説明

ConfigurationManager クラスを使っても取得できますが "Web アプリケーション関連の構成ファイルを処理する場合は、WebConfigurationManager の使用をお勧めします" とのことです。

WebConfigurationManager クラス
https://docs.microsoft.com/ja-jp/dotnet/api/system.web.configuration.webconfigurationmanager?view=netframework-4.8

接続文字列の取得がクリアできても、それが正しいかとか、パラメータの設定の方法はそれで良いのかなどありそうですが、このスレッドの話は接続文字列の取得方法に限っていただき、その他の問題は新たに別のスレッドを立てて質問してください。

投稿2021/07/07 03:48

編集2021/07/07 03:51
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問