Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MySQL在ASP.NET中登录时出错_C#_Mysql_Asp.net_Phpmyadmin - Fatal编程技术网

C# 使用MySQL在ASP.NET中登录时出错

C# 使用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

我尝试使用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 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注入的保护之外,没有任何真正的保护。