C# 使用MySQL在ASP.NET中登录时出错
我尝试使用MySQL数据库和企业库在ASP.NET中创建登录函数 首先,我创建了一个数据库和存储过程 spselectusertype spC# 使用MySQL在ASP.NET中登录时出错,c#,mysql,asp.net,phpmyadmin,C#,Mysql,Asp.net,Phpmyadmin,我尝试使用MySQL数据库和企业库在ASP.NET中创建登录函数 首先,我创建了一个数据库和存储过程 spselectusertype sp DELIMITER // Create procedure spselectusertype( UName varchar(50), Pasword varchar(50) ) BEGIN Select UserType_ID FROM login WHERE UName = UName AND UP
DELIMITER //
Create procedure spselectusertype(
UName varchar(50),
Pasword varchar(50)
)
BEGIN
Select UserType_ID FROM login
WHERE UName = UName AND UPasword = Pasword;
end;
create procedure splogin()
BEGIN
SELECT *
FROM login
WHERE UName = UName and UPasword=UPasword;
END
splogin sp
DELIMITER //
Create procedure spselectusertype(
UName varchar(50),
Pasword varchar(50)
)
BEGIN
Select UserType_ID FROM login
WHERE UName = UName AND UPasword = Pasword;
end;
create procedure splogin()
BEGIN
SELECT *
FROM login
WHERE UName = UName and UPasword=UPasword;
END
然后创建类库并添加以下函数:
Database db = DatabaseFactory.CreateDatabase("abc");
public int UserType(string UName, string UPasword)
{
return Convert.ToInt32(db.ExecuteScalar("spselectusertype", new object[] {
UName, UPasword }).ToString());
}
public int SignInUsers(string UName, string Pasword)
{
return Convert.ToInt32(db.ExecuteScalar("splogin", new object[] { UName, Pasword }));
}
登录按钮代码:
MySqlConnection conn = new
MySqlConnection(ConfigurationManager.ConnectionStrings["abc"].ConnectionString);
ClassLibrary1.Class1 LOGIN = new ClassLibrary1.Class1();
protected void Button1_Click1(object sender, EventArgs e)
{
//UsertpeTID sve in session
int users = LOGIN.UserType(TextBox1.Text, TextBox2.Text);
//UserID Save in Session
int user_id = Convert.ToInt16(LOGIN.SignInUsers(TextBox1.Text, TextBox2.Text));
Session["UserID"] = user_id;
if (Session["UserID"] != null)
{
user_id = Convert.ToInt32(Session["UserID"].ToString());
}
if (users == 1)
{
Session["Login2"] = TextBox1.Text;
Session["Login3"] = TextBox2.Text;
Session["UserTypeID"] = users;
Response.Redirect("alldocuments.aspx");
}
else if (users == 2)
{
Session["Login2"] = TextBox1.Text;
Session["Login3"] = TextBox2.Text;
Session["UserTypeID"] = users;
Response.Redirect("Home.aspx");
Label3.Visible = true;
Label3.Text = "Incorrect User Name or Password";
}
}
}
}
但当我调试我的项目并输入用户名和密码时,它会显示以下错误
Parameter discovery is not supported for connections using GenericDatabase. You must specify the parameters explicitly, or configure the connection to use a type deriving from Database that supports parameter discovery.
在这一行:
return Convert.ToInt32(db.ExecuteScalar("spselectusertype", new object[] {
UserName, UserPassword }).ToString());
那么错误在哪里呢?错误涉及到
Database db = DatabaseFactory.CreateDatabase("abc");
因为它只支持SQLServer
参考文献
请考虑与数据库连接的其他方式。< /P> < P>请,如果你要开发一个带有登录的ASP.NET网站,不要翻滚你自己的系统(除非你知道你在做什么)。 我从您的系统中看到,您几乎没有任何类型的安全性,包括角色管理、文件夹访问管理、密码哈希和密码重置。如果使用ASP.NET成员资格系统(只需使用Visual Studio启动一个新的ASP.NET web窗体应用程序),您就可以获得所有这些信息,还可以通过本地web门户轻松管理这些信息,包括通过web配置工具选择您自己的数据库类型的选项 当然,假设你可以选择使用这个,我会从使用这个系统开始,因为它是一个很好的基础
我知道这并不能直接回答你的问题,但我还是觉得我应该提出建议。@Ryan McDonough请再试一次,这是编辑错误,抱歉+1-这不仅适用于整个登录系统,还适用于加密、哈希等。如果有一个预建的图书馆,尝试重新发明轮子一般来说是一个糟糕的想法。此外,看起来密码是以纯文本形式传递的,除了.net framework提供的有关SQL注入的保护之外,没有任何真正的保护。