前提
データベースに接続し、一覧画面、編集画面、新規作成画面の作成を行いました。
実現したいこと
データベース専用クラスの作成
Controllerへの値の受け渡し
発生している問題・エラーメッセージ
DataBase1.cs (データベース専用クラスです)
public class DataBase1 { public void DataBase() { string ConnectionStr = ConfigurationManager.ConnectionStrings["iPentecDBConnectionString"].ConnectionString; SqlConnection connection; connection = new SqlConnection(ConnectionStr) return ; } }
該当のソースコード
Controller
C#
1 public ViewResult Index(animal model ) 2 { 3 DataBase1 data = new DataBase1(); 4 5 string ConnectionStr 6 = ConfigurationManager.ConnectionStrings["iPentecDBConnectionString"].ConnectionString; 7 8 SqlConnection connection; 9 connection = new SqlConnection(ConnectionStr); 10 11 connection.Open(); 12 13 SqlCommand command = connection.CreateCommand(); 14 command.CommandType = CommandType.Text; 15 16 command.CommandText = "SELECT ・・・"; 17 18 //DataTableに設定 19 //modelListの作成 20 return View(model); 21 } 22 23 [HttpGet] 24 public ActionResult Create() 25 { 26 return View(); 27 } 28 [HttpPost] 29 public ActionResult Create(String id2) 30 { 31 //データベース接続 32 //SELECT文 33 return View(model); 34 } 35
試したこと
たくさん調べながらやってみましたが、インスタンス化するまでしか分かりませんでした。
https://anderson02.com/cs/cskiso/post-375/
こちらのサイトを参考にしていました。
補足情報(FW/ツールのバージョンなど)
ASP.NET MVC
Windows 10 Pro,
Visual Studio2022 Version 17.3.2
.NET framework 4.7.2
> データベースに接続し、一覧画面、編集画面、新規作成画面の作成を行いました。
「行いました」と過去形になってますが、それはどうやって作ったのですか? 期待通りに動いているのですか?
Visual Studio 2022 で SQL Server(ですよね?)のテーブルの CRUD 操作を行うアプリを作る場合、普通、Visual Studio のスキャフォールディング機能で Entity Framework 6 を使った Controller と View を自動生成します。
コードを見るとそうはなってないようですが、スキャフォールディング機能のことを何も知らずにやってませんか? それとも何か特別な理由があって違うことをしているのですか? というより、コードを書こうとしたが、何もわからなくて何もできないので途中で諦めて丸投げしてませんか?
一通り画面は完成しています。そのうえでデータベース接続だけクラスを作成し、controllerの中身を分かりやすくしたいなと思い、質問しました。
スキャフォールディング機能のことは知っていますが、使用せずに進めています。
> 一通り画面は完成しています。そのうえでデータベース接続だけクラスを作成し、controllerの中身を分かりやすくしたいなと思い、質問しました。
ならば、現状の完成していて動くコードを提示し、それをどうしたいのか具体的に説明するようにしてください。
今の質問のコードは、何かしようとしたが分からなくなって途中で諦めて丸投げしたようにしか見えず、議論できるレベルにありません。
> スキャフォールディング機能のことは知っていますが、使用せずに進めています。
理由は何ですか? EF6 を使わないのは何故ですか? 特に理由がなければ自己流はやめましょう。
あなたは、
https://teratail.com/questions/g7d402p11hchfh の kasa_4333
https://teratail.com/questions/pcvjs19roc3xij の tjaxgjj
と同一人物だよね。開発環境が全く同じ。EF6 を使わないというのも同じ。偶然の一致とは言わせないよ。
ASP.NET MVC
Windows 10 Pro,
Visual Studio2022 Version 17.3.2
.NET framework 4.7.2
同一人物ではないのですが、出されている課題が似たような感じなので同じスクールのかたですねおそらく
開発環境は学校のですので同じになるのは必然かと。
そもそも一人で複数のアカウントをもてるものなのですか?
それは信じられませんね。
ASP.NET MVC
Windows 10 Pro,
Visual Studio2022 Version 17.3.2
.NET framework 4.7.2
の書き方が、3 つのスレッドで一字一句違わないのも同じ学校で習ったから? そんなことあり得ないでしょう。
前にも言ったけど、学校の課題は学校の先生に聞いてください。 https://teratail.com/help/avoid-asking に「何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません」と書いてあるように非推奨です。
わたしも質問する前にこの方たちが同じ学校だとおもったので、環境も同じことだし、コピペさせていただいただけです。
課題を質問するのはダメなのですね。かしこまりました。
せめて質問削除依頼してから退会してほしい。
オープンのままずっと残り続ける。
C# の文法の基本のキも分かってないようだが、ホントに学校に行ってるのかしら? だとすると、学校がダメなのか、教えてるのに勉強しない生徒がダメなのかどっちなんだろう。何にせよ酷すぎ。
> せめて質問削除依頼してから退会してほしい。オープンのままずっと残り続ける。
いきなり全部消して去っていくより良いと思います。上のやり取りにだって意味ある情報が含まれているので (スキャフォールディング機能とか)。
仰ることは最も思います。ただ、あくまで「コメント」として目に入りにくいところとなりますし、
「誰かが回答しても未来永劫解決にならない」という点が気になっていますので。
(質問者の行為が無責任であることの指摘です)
スキャフォールディング機能を利用して作成した Controller のコードを回答欄に書いておきます。多少はこのスレッドが意味のあるものになるのではないかと思いますので。