🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

C#

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

Visual Studio

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

5407閲覧

C# テキストボックス・コンボボックスの値をDBに登録

sasamichan

総合スコア9

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

C#

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

Visual Studio

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2019/09/30 06:46

テキストボックスの値をDBに登録したい

Visual Sutudio C# DBはOracle

研修でDBに登録されているNoの最大値+1、テキストボックス、コンボボックスに入力された
値をボタンクリックするとDBに登録するという課題をしております。

エラーは出ていないのですが、DBに登録されません

string sql = "INSERT INTO FRUITS (NO,NAME,SEASON) VALUES ((SELECT MAX(NO) + 1 FROM FRUITS)," + name.Text + "," + seasonList.SelectedValue + ")";

上記のsql分の+ nameText.Text +と+ seasonList.SelectedValue +を
"INSERT INTO FRUITS(NO,NAME,SEASON) VALUES ((SELECT MAX(NO) + 1 FROM FRUITS),’桃’,3)";
など、元から書いて実行すると登録されるので、この部分が問題だと思うのですが
エラーも出ないのでどう間違っているのか見当もつかず困っています。

コンボボックスの値は
DataTable season = new DataTable();

season.Columns.Add("code", Type.GetType("System.Int32")); season.Columns.Add("season", Type.GetType("System.String")); season.Rows.Add("0", ""); season.Rows.Add("1", "春"); season.Rows.Add("2", "夏"); season.Rows.Add("3", "秋"); season.Rows.Add("4", "冬"); seasonList.DataSource = season; seasonList.DataTextField = "season"; seasonList.DataValueField = "code"; seasonList.DataBind();

で格納しています。

初心者のため説明下手・説明不足があるかと思いますが、ヒントを頂けると嬉しいです…。

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

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

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

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

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

YAmaGNZ

2019/09/30 07:03 編集

作成したsqlの中身は確認しましたか? それとは別に、自分でSQLを文字列操作で構築するのではなく、パラメータクエリを使用したほうがよろしいかと思います。
sasamichan

2019/09/30 07:13

コメントありがとうございます! sqlの中身とはどう確認すればよいのでしょうか? パラメータクエリも初めて聞きました… ありがとうございます、調べてみます!
YAmaGNZ

2019/09/30 07:16 編集

sqlに設定しているところの次の行ででもブレイクポイントを設定して変数の中身を見ればよろしいかと
sasamichan

2019/09/30 07:26

変数の中身確認いたしました! テキストボックスの値は問題なく取得しているみたいですが コンボボックスの値が何を選択しても0しか入らない状態でした。 もう少し試行錯誤してみます。ありがとうございます!
YAmaGNZ

2019/09/30 07:55

そこも重要ですが、実行できるSQLとの差異は分かりましたか?
sasamichan

2019/09/30 07:58

まだ全然わからずです…
YAmaGNZ

2019/09/30 08:04

sqlに格納されているSQL文を別のツール等で直接実行するなりして確かめてみてください。 プログラムで構築したSQLが正しいSQLなのか、別のツールで確認することもデバッグする上で重要な手順のひとつとなります。
sasamichan

2019/09/30 08:13

そうなんですね!教えていただきありがとうございます! やってみたところ + name.Text + の前後に「’」がなく登録されないことがわかりました! ありがとうございます(^^) まだコンボボックスの値が正しく取れないのでもう少し頑張ってみます!
退会済みユーザー

退会済みユーザー

2019/09/30 08:42

研修の課題に関する質問は講師に聞くべきで、ここで聞くべき話ではないと思いますが?
YAmaGNZ

2019/09/30 08:46

また、ASP.NET等の環境を追記したほうが正しい回答が得られるかと思います。
sasamichan

2019/09/30 08:49

研修ではありますが教えて頂いてる方が時短勤務の方で15時前には帰ってしまわれるのでここで質問し課題を進めている次第です。
sasamichan

2019/09/30 08:58

環境なども一体自分が何を使っているかもあまりハッキリ理解していない段階でそこまで頭が回らずでした…。 アドバイスありがとうございます。
退会済みユーザー

退会済みユーザー

2019/09/30 12:03

> 研修ではありますが教えて頂いてる方が時短勤務の方で15時前には帰ってしまわれるのでここで質問し課題を進めている次第です。 それは理由になりません。一度 https://teratail.com/help/question-tips を読んでください。ここは「質問と回答を通してお互いに知識や情報を交換・共有する場所です」ということです。 何を作っているかも書かない、開発環境も書かない、何を聞いたら良いのかも分からない生徒に、講師が face-to-face で何度もやりとりをして、何を聞きたいのかを探って、回答してもらうというようなことを期待しているとすれば、ここは適当な場所ではないと思います。
sasamichan

2019/09/30 12:59

ご指摘頂きありがとうございます。 知識を付け、情報交換が出来るよう精進して参りたい所存です。 何度もやり取りして頂き、手取り足取り教えて頂くつもりは ありませんでしたが親切にして頂いたので つい甘えてしまいました。 不快に感じられたなら申し訳ございません。
guest

回答1

0

自己解決

sql文のname.Textの前後に「'」を追加で文字列にし、DBに登録できるようになり、
デザインからコンボボックスのプロパティのAutoPostBackをTrueに変更し
Page_Lode部分に下記のコードを追加することで
コンボボックスの値が正常に取得できるようになりました。

C#

1if (IsPostBack == true) 2 { 3 return; 4 }

アドバイスくださった方ありがとうございました。

投稿2019/10/01 05:06

sasamichan

総合スコア9

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

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

Zuishin

2019/10/01 05:11

それでもできるかもしれませんが、会社のレベルにもよりますけど、現実にはパラメータが使えないと不合格になります。実用にならないので。パラメータについては講師に聞いてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問