使用MySQL的ASP.NET中出现登录错误
本文关键字:登录 错误 NET MySQL ASP 使用 | 更新日期: 2023-09-27 18:21:58
我尝试使用MySQL数据库和企业库在ASP.NET中创建登录函数。
首先,我创建了一个数据库和存储过程。
spelectusertype sp
DELIMITER //
Create procedure spselectusertype(
UName varchar(50),
Pasword varchar(50)
)
BEGIN
Select UserType_ID FROM login
WHERE UName = UName AND UPasword = Pasword;
end;
splogin sp
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());
那么错误在哪里呢?
如果你要开发一个登录的ASP.NET网站,请不要滚动你自己的系统(除非你知道自己在做什么)。
我从您的系统中看到,您几乎没有任何安全性,包括角色管理、文件夹访问管理、密码哈希和密码重置。如果您使用ASP.NET成员系统(只需使用Visual Studio启动一个新的ASP.NET web表单应用程序),您就可以获得所有这些,还可以通过本地门户网站轻松管理这些内容,包括通过web配置工具选择您自己的数据库类型的选项。
当然,假设你可以选择使用这个系统,我会从使用这个系统开始,因为这是一个很好的起点。
我意识到这并不能直接回答你的问题,但我仍然觉得我应该建议它。
中涉及错误
Database db = DatabaseFactory.CreateDatabase("abc");
因为它应该只支持SQLServers
参考
参考链接请考虑其他连接数据库的方式。