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

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

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

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

SQL Server

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

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

ASP.NET

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

解決済

MVC String.IsNullOrEmptyを用いたSQL文

tjaxgjj
tjaxgjj

総合スコア12

C#

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

SQL Server

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

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

ASP.NET

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

1回答

0リアクション

0クリップ

329閲覧

投稿2022/09/22 07:42

前提

mvcを用いて、データベースに接続し、一覧画面と検索機能の追加をしています。

実現したいこと

テキストボックスとプルダウンボックスがあり、それぞれmodel.a model.bです。
model.aには名前カラム(Name)の検索、model.bには性別(gender)のカラムの検索機能を追加したいです。

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

現在はmodel.aのテキストボックスからNameカラムの検索は出来ます。

if (String.IsNullOrEmpty(model.a)) { //一覧表示 command.CommandText = "SELECT * FROM Syain"; } else {//aから名前を取得 command.CommandText = "SELECT * FROM Syain WHERE Name LIKE '%" + model.a + "%'"; }

'%" + model.a + "%'"の部分は実際にはパラメータを利用しておりますが、
分かりやすくするために省略しています。

該当のソースコード

上記のソースコードにmodel.bも加えた検索機能を追加したいです。
①テキストボックス、プルダウンボックスともにnullか空欄の時
一覧画面を表示(SELECT * FROM Syain)

②テキストボックスに文字が入っていて、プルダウンボックスはnullか空白の時
テキストボックスの内容で検索する(SELECT * FROM Syain WHERE Name LIKE '%" + model.a + "%'")

③テキストボックスはnullか空白で、プルダウンボックスには選択リストから選択されている時
プルダウンボックスの内容で検索する(SELECT * FROM Syain WHERE Gender LIKE '%" + model.b + "%'" )

④テキストボックスにもプルダウンボックスにも文字が入っていて、選択リストから選択されている時
どちらにも満たしているものが検索される(②と③を&&でつなぐ?)

Syain.model

public string a { get; set; } public List<BihinDB> aList { get; set; } public string b { get; set; } public List<SelectListItem> bList { get; set; }

index.cshtml

@using (Html.BeginForm()) { //テキストボックス @Html.TextBoxFor(model => model.a) //ドロップダウンリスト @Html.DropDownListFor( model => model.b, Model.bList, "未選択") //検索ボタン <input type="submit" value="検索" />

試したこと

String.IsNullOrEmpty(model.a)
のmodel.aの後にmodel.bを追加してみましたが、IsNullOrEmptyの部分がエラーになり、引数2を指定するメソッド”IsNullOrEmpty”オーバーロードはありませんと表示されます。

補足情報(FW/ツールのバージョンなど)

ASP.NET MVC 
Windows 10 Pro,
Visual Studio2022 Version 17.3.2
.NET framework 4.7.2

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

tjaxgjj

2022/09/22 08:09

Entity Frameworkについて調べてみます! URLの方とは面識ないです、、><
SurferOnWww

2022/09/22 08:34

> URLの方とは面識ないです、、 では同じ研修の課題でしょうか? で、何がわかれば良いのでしょう? String.IsNullOrEmpty の使い方だけが分かればあとは自分で解決できるということでいいのですか?
KOZ6.0

2022/09/22 11:16

エラーについてはメッセージのとおりで、そんな使い方はできません。 ④ については、いったん C# から離れ、どんな SQL を書けばいいのか考えてみるといいです。 SQL を書くことができたら C# でどう実現するか考えてください。
tjaxgjj

2022/09/22 15:13

SurferOnWww様 >String.IsNullOrEmpty の使い方だけが分かればあとは自分で解決できるということでいいのですか? ④のselect文同士を繋げる?処理とString.IsNullOrEmptyの使い方が分かれば、なんとかできるかなと思います。 EntityFlameworkについては調査中です。
tjaxgjj

2022/09/22 15:15

KOZ6.0様 ④については②と③の処理を繋げたい?のですが、一文で表すことはできるのでしょうか? まずはSQL文を考えてみようと思います。
m.ts10806

2022/09/22 19:21 編集

SQLといってもアプリケーション側からしたら文字列なので、 WHERE句部分のみ動的に組み立てればいいのではと。 例として 「そこにいる人に対して1人ずつ”こんにちは”と挨拶を出力する。だれもいなければ”こんにちは”のみ出力する」プログラムで 誰もいない ->こんにちは Aさんがいる -> こんにちは Aさん AさんとBさんがいる -> こんにちは Aさん と Bさん これと同じです。 同じ部分「こんにちは」は共通なので毎回引っ付ける必要はなく あとは動的。 文字列配列と配列の連結をすればできそうですよね。
SurferOnWww

2022/09/22 21:44

> EntityFlameworkについては調査中です。 そこをまず決めてください。ちなみに、ASP.NET MVC では Entity Framework を利用すべきです。Visual Studio のデザイナがそれを使うようにできているから。
tjaxgjj

2022/09/23 08:21

m.ts10806様 回答ありがとうございます。 WHERE句の組み立ても考えてみます!

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C#

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

SQL Server

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

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

ASP.NET

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