通过设置数据库后相关内容后,设计 登录页面,利用Ado.net编程,实现用户名、密码的数据库验证进入合法访问页面,并能防止用户绕过登录页面,同时使用前端组件或服务器端gridview组件显示 该用户选修的课程。

时间: 2024-05-09 15:19:11 浏览: 13
以下是一个简单的示例,演示如何使用ASP.NET和ADO.NET实现登录验证和显示课程信息。 1. 创建数据库表格 首先,我们需要创建一个数据库表格来存储用户信息和课程信息。在这个示例中,我们创建了两个表格: - users: 存储用户信息,包括用户名和密码。 - courses: 存储课程信息,包括课程名称和选课人数。 以下是两个表格的结构: users表格: | 列名 | 数据类型 | | --- | --- | | id | int | | username | nvarchar(50) | | password | nvarchar(50) | courses表格: | 列名 | 数据类型 | | --- | --- | | id | int | | name | nvarchar(50) | | enrollments | int | 2. 创建ASP.NET页面 接下来,我们创建一个ASP.NET页面来实现登录验证和显示课程信息。以下是页面的基本结构: ```html <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Login Page</title> </head> <body> <form id="form1" runat="server"> <div> <h1>Login</h1> <asp:Label ID="lblMessage" runat="server" Text=""></asp:Label><br /> <asp:TextBox ID="txtUsername" runat="server"></asp:TextBox><br /> <asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox><br /> <asp:Button ID="btnLogin" runat="server" Text="Login" OnClick="btnLogin_Click" /><br /> <br /> <h1>My Courses</h1> <asp:GridView ID="gvCourses" runat="server"></asp:GridView> </div> </form> </body> </html> ``` 该页面包含一个登录表单和一个用于显示课程信息的GridView组件。 3. 编写代码 在页面的代码后台中,我们需要编写代码来处理登录验证和显示课程信息。以下是代码的基本结构: ```c# using System; using System.Data; using System.Data.SqlClient; using System.Web.Configuration; namespace WebApplication1 { public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // 如果用户未登录,则隐藏课程信息 if (Session["username"] == null) { gvCourses.Visible = false; } else { // 加载课程信息 LoadCourses(); } } protected void btnLogin_Click(object sender, EventArgs e) { // 获取用户名和密码 string username = txtUsername.Text; string password = txtPassword.Text; // 验证用户名和密码 if (ValidateUser(username, password)) { // 登录成功,保存用户名到Session Session["username"] = username; // 显示课程信息 gvCourses.Visible = true; LoadCourses(); } else { // 登录失败,显示错误信息 lblMessage.Text = "Invalid username or password."; } } private bool ValidateUser(string username, string password) { // 从Web.config中读取数据库连接字符串 string connectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; // 创建SQL连接和命令对象 using (SqlConnection connection = new SqlConnection(connectionString)) using (SqlCommand command = new SqlCommand("SELECT COUNT(*) FROM users WHERE username=@username AND password=@password", connection)) { // 添加参数 command.Parameters.AddWithValue("@username", username); command.Parameters.AddWithValue("@password", password); // 打开连接并执行命令 connection.Open(); int count = (int)command.ExecuteScalar(); // 如果找到了匹配的用户,则返回true,否则返回false return (count > 0); } } private void LoadCourses() { // 从Web.config中读取数据库连接字符串 string connectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; // 创建SQL连接和命令对象 using (SqlConnection connection = new SqlConnection(connectionString)) using (SqlCommand command = new SqlCommand("SELECT name, enrollments FROM courses WHERE id IN (SELECT courseId FROM enrollments WHERE username=@username)", connection)) { // 添加参数 command.Parameters.AddWithValue("@username", Session["username"]); // 创建DataAdapter和DataSet对象 SqlDataAdapter adapter = new SqlDataAdapter(command); DataSet dataSet = new DataSet(); // 填充DataSet adapter.Fill(dataSet); // 绑定GridView gvCourses.DataSource = dataSet; gvCourses.DataBind(); } } } } ``` 该代码中的关键点包括: - 在Page_Load事件中,如果用户未登录,则隐藏GridView组件。 - 在btnLogin_Click事件中,验证用户名和密码,如果验证成功,则保存用户名到Session并显示GridView组件。 - ValidateUser方法使用SQL查询验证用户名和密码。 - LoadCourses方法使用SQL查询获取该用户选修的课程信息,并将其绑定到GridView组件上。 4. 测试应用程序 现在,我们可以部署并测试我们的应用程序。在访问登录页面时,用户需要输入他们的用户名和密码。如果验证成功,则他们将被重定向到一个页面,该页面将显示该用户选修的课程信息。如果用户未通过验证,则会显示错误消息。 此外,如果用户尝试绕过登录页面,直接访问课程信息页面,则GridView组件将不会显示任何内容,因为用户未进行身份验证。

相关推荐

最新推荐

recommend-type

C# Ado.net实现读取SQLServer数据库存储过程列表及参数信息示例

主要介绍了C# Ado.net实现读取SQLServer数据库存储过程列表及参数信息,结合实例形式总结分析了C#针对SQLServer数据库存储过程及参数信息的各种常见操作技巧,需要的朋友可以参考下
recommend-type

ADO.NET访问数据库的原理、方法

介绍了使用ADO.NET访问常见数据库的方法,原理讲解非常透彻,带有很好的实例讲解,非常适合初学者。
recommend-type

ADO.NET数据库访问技术详细资料

ADO.NET是与数据库访问操作有关的对象模型的集合,它基于Microsoft的.NET Framework,在很大程度上封装了数据库访问和数据操作的动作。 ADO.NET同其前身ADO系列访问数据库的组件相比,做了以下两点重要改进: ...
recommend-type

通过ADO访问Access数据库的设计与实现.

本文简单介绍了 VC++ 中访问数据库的几种方法, 并介绍了 ADO的基本特点, 及在 VC++ 中直接通过ADO 对Access 数据库进行访问的方法, 并给出一个完整的使用实例 。
recommend-type

ADO.NET 数据库连接的相关知识 Connect

ADO.NET提供了多种对象模型,比较典型的以下有五种 一、SqlConnection对象 二、SqlCommand对象 三、SqlDataAdapter对象 四、DataTable对象 五、DataSet对象
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性

![MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性](https://picx.zhimg.com/80/v2-8132d9acfebe1c248865e24dc5445720_1440w.webp?source=1def8aca) # 1. MATLAB结构体基础** MATLAB结构体是一种数据结构,用于存储和组织相关数据。它由一系列域组成,每个域都有一个名称和一个值。结构体提供了对数据的灵活访问和管理,使其成为组织和处理复杂数据集的理想选择。 MATLAB中创建结构体非常简单,使用struct函数即可。例如: ```matlab myStruct
recommend-type

详细描述一下STM32F103C8T6怎么与DHT11连接

STM32F103C8T6可以通过单总线协议与DHT11连接。连接步骤如下: 1. 将DHT11的VCC引脚连接到STM32F103C8T6的5V电源引脚; 2. 将DHT11的GND引脚连接到STM32F103C8T6的GND引脚; 3. 将DHT11的DATA引脚连接到STM32F103C8T6的GPIO引脚,可以选择任一GPIO引脚,需要在程序中配置; 4. 在程序中初始化GPIO引脚,将其设为输出模式,并输出高电平,持续至少18ms,以激活DHT11; 5. 将GPIO引脚设为输入模式,等待DHT11响应,DHT11会先输出一个80us的低电平,然后输出一个80us的高电平,
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。