ASP.NET 链接sql数据库的 「登录/注册」界面

资源在这里 :github源文件参考

先看一下截图


支持的功能:

  • 密码显示成点点
  • 登录成功的提示
  • 登录失败的提示
    • 账号或者密码错了分开提示
  • 注册成功的提示
  • 不能注册已经在数据库里面的用户ID

我在这里看了很多这个人的教程:walking橙子 ,但是里面有的东西我不能用,messagebox.show() 就不行。我也不是很懂(搜索也没有搜到,不知道怎么使用messagebox的我只能找一种替换的弹窗方式(当然也是来自百度)使用起来也很简单,关键是能用。

推荐大家去看一下,我这里不打算写重复的东西,在源文件里面我有很多的注释,相信可以方便下载了源文件的人理解一点。


具体步骤

1.用SSMS建立一个数据库,大概这样

2.做好一个网页,大概和头图那个类似就行了(看着比较经典但是外观这里不是重点)

  这里说一下密码样式,textmode 属性

   <asp:TextBox ID="TextBox2" runat="server" ToolTip="输入您的密码"  TextMode="Password"></asp:TextBox>

                                                                                                                 ↑TextMode="Password"是新加入的。
这个设置和现代浏览器很搭,还会有一个小眼睛让你选择显示密码,默认是点点(edge)

 

 

3.拖一个下面这个控件,并且链接好数据库文件/服务器。(这个也许比较困难,但是这个网上有很多的教程,还有各种问题的处理方法)

4.开始打关于那两个按钮的代码

登录按钮:

先打一个SqlCommand之类的,会划错误提示,使用vs的自动补齐功能,它可以帮助你补上using的东西

  • 确认用户没有空着框子
  • 和数据库做对比
    • sqlconnection.open()  这里的链接字符串可以在这边找到(看图 ↓)

    • sqlcommand.excute() (并传递给reader)注意new sqlcommand()里面的参数

    • reader.read()

    • 判断reader.hasrows 来看看是否有这一个用户和密码是否正确。并且弹窗

    • 关于用户输错了什么的判断(个人感觉这个很重要)并且弹窗

 protected void Button1_Click(object sender, EventArgs e)
    {
        if (TextBox1.Text == "")
        {
            Response.Write("<script>window.alert('没有输入用户名');</script>");
            return;
        }
          
        else if(TextBox2.Text == "")
        {
            Response.Write("<script>window.alert('没有输入密码');</script>");
            return;
        }
             
        SqlConnection conn = new SqlConnection("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=login_webhw;Integrated Security=True");
        // 这句话从sqldatasource控件里面复制一个出来。
        conn.Open();

        SqlCommand cmd = new SqlCommand("SELECT *FROM logindb where userID = '" + TextBox1.Text.Trim() + "' and userPWD = '" + TextBox2.Text.Trim() + "'",conn);
        // 这句话创建一个指令
        SqlDataReader sdr = cmd.ExecuteReader();//指令传给reader
        Label1.Text=cmd.CommandText.ToString();//查看一下自己的查询语句对不对,一会注释掉
        // 这句执行它
        sdr.Read();
        if (sdr.HasRows)
            Response.Write("<script>window.alert('登录成功');</script>");
        else//最讨厌的就是一个网页告诉我用户名或者密码错误,但是不告诉我到底是哪个
        {
            sdr.Close();//这里本来不知道要写的,但是下面再次调用出现了小问题,就加上。最好用完就关掉
            cmd.CommandText = "SELECT *FROM logindb where userID = '" + TextBox1.Text.Trim() +"'";
            sdr = cmd.ExecuteReader();//指令传给reader
            if (sdr.HasRows)
                Response.Write("<script>window.alert('密码错误');</script>");
            else
                 Response.Write("<script>window.alert('用户名不存在');</script>");
            sdr.Close();
        }
           
        conn.Close();
    }

注册按钮:

  • 主要的区别就在于使用的是插入的sql语句
  • trim()函数是照着上一个帖子的写的,感觉用处不大。

我在里面放了一个浅色的label用来看看自己的语句有没有错误,因为一堆的引号还有加号真的很花眼。

 protected void Button2_Click(object sender, EventArgs e)//注册按钮
    {
        if (TextBox1.Text == "")
        {
            Response.Write("<script>window.alert('没有输入用户名');</script>");
            return;
        }

        else if (TextBox2.Text == "")
        {
            Response.Write("<script>window.alert('没有输入密码');</script>");
            return;
        }
        SqlConnection conn = new SqlConnection("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=login_webhw;Integrated Security=True");
        conn.Open();
        //先检查有没有已经存在了,这个用户
        SqlCommand cmd = new SqlCommand("SELECT *FROM logindb where userID = '" + TextBox1.Text.Trim() + "'", conn);
        SqlDataReader sdr = cmd.ExecuteReader();
        Label1.Text = cmd.CommandText.ToString();//查看一下自己的查询语句对不对,一会注释掉
        sdr.Read();
        if (sdr.HasRows)
            Response.Write("<script>window.alert('用户名已经存在,不可以重复注册');</script>");
        else//开始写注册的东东
        {
            sdr.Close();
            cmd.CommandText = "insert into logindb (userID,userPWD) values ('"+TextBox1.Text+"','"+TextBox2.Text+"')";
            string rows_effedted = cmd.ExecuteNonQuery().ToString();
            Label1.Text = rows_effedted;
            conn.Close();
            conn.Dispose();//释放conn所有的资源。
            Response.Write("<script>window.alert('注册成功,可以登录了');</script>");
        }

    }

 

这样就写完了,我还是喜欢玩css的东西,很酷诶!

但是学校叫我做注册和登录,重点在于链接数据库。

谢谢你的阅读。


资源在这里 :github源文件参考

我的个blog : https://kasusa.github.io 可以去博客里和我email联系。乐于回答相关的小疑问。

 

 

  • 28
    点赞
  • 195
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
ASP.NET是一种面向Web应用程序的框架,它可以通过多种方式与SQL数据库进行链接。其中,使用ADO.NET链接SQL Server数据库是最常见的一种方式。 在ASP.NET中,你可以使用ASP.NET Web Forms或ASP.NET MVC框架来创建一个登陆界面。不同的框架有不同的实现方式,下面我会以ASP.NET Web Forms框架为例来介绍如何链接SQL Server数据库的登陆界面。 首先,你需要在Visual Studio中创建一个Web Forms应用程序,然后在Web.config文件中配置数据库连接字符串。例如: ``` <connectionStrings> <add name="MyConnectionString" connectionString="Data Source=myServerAddress;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;" providerName="System.Data.SqlClient" /> </connectionStrings> ``` 接下来,在登陆页面中,你可以使用ASP.NET的Login控件来实现登陆功能。例如: ``` <asp:Login ID="Login1" runat="server" DestinationPageUrl="~/Default.aspx" OnAuthenticate="Login1_Authenticate"> <LayoutTemplate> <table> <tr> <td><asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">用户名:</asp:Label></td> <td><asp:TextBox ID="UserName" runat="server"></asp:TextBox></td> </tr> <tr> <td><asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">密码:</asp:Label></td> <td><asp:TextBox ID="Password" runat="server" TextMode="Password"></asp:TextBox></td> </tr> <tr> <td colspan="2"><asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="登陆" /></td> </tr> </table> </LayoutTemplate> </asp:Login> ``` 在登陆事件中,你可以编写代码来验证用户输入的用户名密码,并且从数据库中查询是否存在该用户。例如: ``` protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) { string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand("SELECT COUNT(*) FROM Users WHERE Username = @Username AND Password = @Password", connection); command.Parameters.AddWithValue("@Username", Login1.UserName); command.Parameters.AddWithValue("@Password", Login1.Password); connection.Open(); int count = (int)command.ExecuteScalar(); if (count == 1) { e.Authenticated = true; } else { e.Authenticated = false; } } } ``` 当用户点击登陆按钮时,系统会调用Login控件的OnAuthenticate事件,在该事件中调用Login1_Authenticate方法来验证用户身份。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值