前提・実現したいこと
ここに質問の内容を詳しく書いてください。
VisualStudio2019を使いC#とASP.NETのWebFormで掲示板のようなものを作成してみたいと思っています。
その際にDBにログインID、パスワード、氏名を登録する段階までは何とか実装してみることは出来ました。
しかし肝心のDBを参照し、ログイン画面への遷移の仕方について詰まってしまった為
質問の投稿をしようと考えました。
私自身が検索を行いほぼコピーですがつなげてみたコードを添付いたします。
また、より容易な方法や書きやすい方法などあれば教えていただきたいです。
【開発環境】
Windows10
NET Framework のバージョン 4.8
DB SQLserver ver2019
■■な機能を実装中に以下のエラーメッセージが発生しました。
該当のソースコード
C#
1using System; 2using System.Configuration; 3using System.Data; 4using System.Data.SqlClient; 5 6 7 8public partial class top : System.Web.UI.Page 9{ 10 protected void Page_Load(object sender, EventArgs e) 11 { 12 13 } 14 15 protected void login_Click(object sender, EventArgs e) 16 { 17 18 19 20 var table = new DataTable(); 21 var connectionString = ConfigurationManager.ConnectionStrings["bbs"].ConnectionString; 22 DataTable dataTable = new DataTable(); 23 24 using (var connection = new SqlConnection(connectionString)) //ログインした人のセッション保持 25 using (var command = connection.CreateCommand()) 26 { 27 try 28 { 29 // データベースの接続開始 30 connection.Open(); 31 32 // SQLの準備 33 command.Parameters.Add(new SqlParameter("@logintext", TextID.Text)); 34 command.CommandText = @"SELECT name FROM Table WHERE [loginID] = @logintext"; 35 // SQLの実行 36 var adapter = new SqlDataAdapter(command); 37 DataRow dr = table.Rows[0]; 38 Session["name"] = table.Rows[0][0]; 39 } 40 catch (Exception exception) 41 { 42 Console.WriteLine(exception.Message); 43 throw; 44 } 45 finally 46 { 47 // データベースの接続終了 48 connection.Close(); 49 } 50 } //ここまで 51 52 53 string sql = "SELECT * FROM [Table] WHERE [name] = " + "'" + Textname.Text + "'" + " AND [loginID] = " + "'" + TextID.Text + "'" + " AND [pass]= " + "'" + Textpass.Text + "'"; 54 55 using (SqlConnection conn = new SqlConnection(connectionString)) 56 { 57 using (SqlCommand cmd = new SqlCommand(sql, conn)) 58 { 59 using (SqlDataAdapter adapter = new SqlDataAdapter(cmd)) 60 { 61 adapter.Fill(dataTable); 62 int rowcount = dataTable.Rows.Count; 63 64 if (rowcount == 1) 65 { 66 Response.Redirect("./kari.aspx"); 67 } 68 else 69 { 70 Literal1.Visible = true; 71 72 } 73 } 74 } 75 } 76 } 77 78 79 protected void touroku_Click(object sender, EventArgs e) 80 { 81 Response.Redirect("./kaintouroku.aspx"); 82 } 83 } 84 85 86
<%@ Page Title="" Language="C#" MasterPageFile="~/bbs.master" AutoEventWireup="true" CodeFile="top.aspx.cs" Inherits="top" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <p> <asp:Label ID="Label1" runat="server" Text="氏名"></asp:Label> <asp:TextBox ID="Textname" runat="server"></asp:TextBox> </p> <p> <asp:Label ID="Label2" runat="server" Text="ID"></asp:Label> <asp:TextBox ID="TextID" runat="server"></asp:TextBox> </p> <p> <asp:Label ID="Label3" runat="server" Text="PASS"></asp:Label> <asp:TextBox ID="Textpass" runat="server"></asp:TextBox> </p> <p> <asp:Button ID="login" runat="server" Text="ログイン" OnClick="login_Click"/> <asp:Literal ID="Literal1" runat="server" Text="※miss" Visible="False"></asp:Literal> </p> <p> <asp:Button ID="touroku" runat="server" Text="新規登録" OnClick="touroku_Click" /> </p> </asp:Content>
ASP.NET と言っても Web Forms, MVC, Web Pages, Razor Pages などいろいろありますので、どれかを書くようにしましょう。(コードを見ればわかるとは言わないでください。あなたが質問の最初の一行目に書けば済むことなのですから)
開発環境(OS, .NET Framework のバージョン、DB は何かとそのバージョンなど)を書いてください。
認証システムを独自実装しているようですが、ASP.NET Identity を使うという選択肢はないのですか? 質問者さんの独自では誰も詳細は分からないのでアドバイスが得にくいし、そもそも、初学者(ですよね?)が認証システムを独自実装するなんて言うのはまず無理ですから。
返答ありがとうございます。
質問に対しての情報量が少なく申し訳ございません。
そして至らない点を教えていただきありがとうございます。
identityについて調べてみたいと思います。
質問は編集できます。→ごめんなさい。書いてましたね。
認証システムを独自実装しているようですが、ASP.NET Identity を使うという選択肢はないのですか?
まだ調べている最中で、答えが出せないだけで独自実装にこだわっている訳でなければ ASP.NET Identity を紹介しますけど。
表題に「ASP.NETを利用したログイン機能」とありますので、ASP.NET と連携を取って連携を取って破綻なく動く認証システムを実装したいのだと理解していますが、そうであれば ASP.NET Identity を使うことをお勧めします。
質問のコードを拝見すると、今の質問者さんのスキルでは ADO.NET を使って SQL Server にアクセスするといった基本的なことができず、それでは ASP.NET Web アプリで使える(あくまで「使える」ということが重要と理解してます)認証システムの独自実装を行うのは無理です。
「ASP.NETを利用したログイン機能」から離れて、質問のコードの ADO.NET を使って SQL Server にアクセスするところだけの問題を解決したいのであれば、新たに別のスレッドを立てて、C#, ADO.NET, SQL Server の質問として聞くことをお勧めします。
ASP.NET Identity をは何かを調べている最中で、使うか否か答えが出せないだけで、独自実装にこだわっている訳ではないと勝手に理解して、ASP.NET Identity を使う方法を回答欄に紹介しました。
他にも回答が付いていますので、それらに対するフィードバックを書いてください。
その後どうしたのか進展を書いてください。
問題・課題が解決できたならベストアンサーを付けてこのスレッドはクローズしてください。
回答2件
あなたの回答
tips
プレビュー





