关于我使用asp.net和C#创建的登录页面
本文关键字:创建 登录 于我使 asp net | 更新日期: 2023-09-27 18:23:49
我为我的班级项目创建了一个网站,但我很难创建登录名。我使用参数将数据插入数据库。我在c#中做这件事,我的数据库在sql server中。
我首先创建登录过程:
ALTER PROC [dbo].[uselogin]
@userNickName nvarchar(50),
@userPassword nchar(10)
As
SELECT [userId]
,[userFirstName]
,[userLastName]
,[userNickName]
,[userPassword]
,[userStreetAddress]
,[userEmail]
FROM [dbo].[User_T]
WHERE userNickName=@userNickName AND userPassword=@userPassword
然后在登录页面中,我创建了登录文本框和登录按钮,如下所示:
<asp:Label ID="Label3" runat="server" Text="Username: "></asp:Label>
<asp:TextBox ID="txtuserName" runat="server" CssClass="form-control "></asp:TextBox>
<asp:Label ID="Label4" runat="server" Text="Password: "></asp:Label>
<asp:TextBox ID="txtPassword" runat="server" CssClass="form-control "></asp:TextBox>
<asp:Button ID="btnLogIn" runat="server" Text="Log In " onClick="button_login_Click" CssClass="btn btn-primary btn-block" />
aspx页面后面的代码
protected void button_login_Click(object sender, EventArgs e)
{
string userName = txtuserName.Text;
string userPassoword = txtPassword.Text;
User user = new User(userName, userPassoword);
cc.userLogin(user);
}
这是我的C#代码和我使用的所有类:
Class User{
string name;
string userName;
string usePass;
.........
.....
public User(string un, string pass)
{
this.UserNickName = un;
this. UserPass = pass;
}
// create getter and setter to each one.
public UserNickName
{
get{return userName; }
set{ userName = value;}
}
// the same for all my getter and setter.
}这是另一个称为处理程序的类
public handler{ // has object from DBManager.cs
DBManager db;
public void userLogin(User u){ db.userLogin(u);}}
我的最后一堂课是数据库管理员
public DBManager{
// constructor has the database connection and my login method
public void userLogin(User user)
{
SqlCommand cmd = new SqlCommand("uselogin",_conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter p1 = new SqlParameter("userNickName", user.UserNickName);
SqlParameter p2 = new SqlParameter("userPassword", user.UserPassword);
cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);
_conn.Open();
SqlDataReader rd = cmd.ExecuteReader();
if (rd.HasRows)
{
rd.Read();
HttpContext.Current.Response.Redirect("PublishingAnEvent.aspx", true);
}
else
{
// Label5.Text = "do it agin";
HttpContext.Current.Response.Redirect("RegestrationPage.aspx", true);
}
}
我希望你能给我答案。我读了很多书,但什么都找不到。。。。感谢大家。
如果不为您做功课,我确实有以下见解:
- 您应该始终使用"所有者"作为存储过程名称的一部分
- 您应该始终在任何实现
IDisposable
的对象上使用using
块(请参阅下面的示例)。这有助于轻松正确地处理它们 - 我没有在构造函数中实例化连接,而是选择了使用方法的模式。该方法将实例化并打开
SqlConnection
对象,它将处理所有错误 - 我将参数创建更改为使用更简单的方法
- 我去掉了
rd.Read()
行,因为它似乎没有任何作用
示例:
public DBManager
{
public void userLogin(User user)
{
using (SqlConnection _conn = GetConnection())
{
using (SqlCommand cmd = new SqlCommand("dbo.uselogin",_conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@userNickName", user.UserNickName);
cmd.Parameters.AddWithValue("@userPassword", user.UserPassword);
using (SqlDataReader rd = cmd.ExecuteReader())
{
if (rd.HasRows)
{
HttpContext.Current.Response.Redirect("PublishingAnEvent.aspx", true);
}
else
{
//. Label5.Text = "do it again";
HttpContext.Current.Response.Redirect("RegistrationPage.aspx", true);
}
}
}
}
}
}