実現したいこと
初めて質問するので読みにくかったら申し訳ございません。
現在WPFでの学習を行っています。
【実現したいこと】
・WPFアプリケーションにてログイン画面を作成し、ログイン認証を行いたい
・ログインユーザー情報はデータベース(SQLServer)に保存しておき、ユーザーが入力した内容に対しselectクエリを投げ、照合を行いたい
発生している問題・分からないこと
・ユーザーが入力した情報をどうやってSQLServerに送るのかがいまいち理解できていません。
・とりあえず入力チェックなどは行わず、ただ情報があるかどうかだけを照合したいです。
該当のソースコード
XAML
1<Window x:Class = "DB_Login_Test.MainWindow" 2xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3xmlns="http://schemas.microsft.com/winfx/2006/xaml" 4Title="MainWindow"> 5<Grid> 6<!--ユーザーID--> 7<TextBox x:Name="txt_User" Content="" /> 8<PasswordBox x:Name="txt_Pass" Content="" /> 9 <Button x:Name="btn_login" Content="ログインする" Click="Button_Click" /> 10</Grid> 11</Window>
using System; using System.Windows; using ViewModel //メインウィンドウ namespace DB_Login_Test { //プロパティ public string Read_userId{get; set;} //ユーザー情報保持する public string Read_Password{get; set;} //パスワード情報保持する public class MainWindow : Window { InitiallizeCompornent(); } //ユーザーの入力した情報をプロパティに保持するメソッド public void GetLoginInfo() { Read_userID = txt_User.Text; //ID Read_Password = txt_Pass.Text; //パスワード } public void Button_click(object sender, RoutedEventArgs e) { //ボタンが押されたときの処理 //情報保持メソッド呼び出し GetLoginInfo(); //接続クラスインスタンス化 DB_Connection Connect = new DB_Connection(); Connect.Connection(); //メソッド呼び出し //DBと照合を行ってTrueならOK,falseならエラー!と出るメッセージウィンドウを出す if( パスワード == select文。。? //ここわからない ) { MassageBox("ログインできました!") }else{ MassageBox.show("エラーです。。。") } }
DB_Connection.cs
1using System.Data.SqlClient; 2using System.Data; 3 4//DBと接続するclass 5public void DB_Connection 6{ 7 8public void Connection(){ 9 //接続用ストリーム 10 string connectionString = "Data Source=サーバー名;Initial Catalog=データベース名;Security=True;" 11 12 using (SqlConnection connection = new SqlConnection(connectionString)) 13 { 14 connection.Open(); 15 16 using (SqlCommand command = new SqlCommand("SELECT * FROM USR.LoginTable", connection)) 17 { 18 using (SqlDataReader reader = command.ExecuteReader()) 19 { 20 while (reader.Read()) 21 { 22 //とりあえず読みだしたものを表示 23 Console.WriteLine($"Name: {name}, Age: {age}"); 24 } 25 26 //接続閉じる 27 Connnection.Close(); 28 29 } 30 } 31 } 32} 33
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
色々なところを調べたり、確認してみたのですが、どうしてもわかりませんでした。
浅学でご迷惑をおかけすると思いますが、ご助力いただけると恐縮です。
また、このコード内でおかしなところがあればご指摘ありますと大変うれしいです。
何卒宜しくお願い致します。
参考サイト:https://csharp.keicode.com/topics/database-select.php
https://plaza.rakuten.co.jp/mathmati/diary/202404070004/?scid=wi_blg_amp_diary_next
https://qiita.com/homan05872/items/787909b297f150a4d22e
理想の形(本当はVMMVを意識したかったのですが、難しかったのでとりあえずVMを呼び出す形をとりました):https://qiita.com/ara-bot/items/36946bb10ef25261e814
補足
1.テーブル定義
ローカル下のSQLServerに作成していたので、こちらにテーブル情報失礼します。
使用テーブル:[USR].[LoginTable]
カラム情報
①id(int 非NULL IDENTITY PK) ②userid(varchar(10) 非NULL UK) ③password(varchar(10) 非NULL) ④Name(varchar(20) 非NULL)
④Nameについては今後グリッドビューにこのテーブルを表示したいと考えているので追加しています(今回聞きたい情報としては違うかもしれないですが、一応記載させてください)

回答1件
あなたの回答
tips
プレビュー