Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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# 使用C登录并连接到SQL Server数据库_C#_Sql Server 2008_Login - Fatal编程技术网

C# 使用C登录并连接到SQL Server数据库

C# 使用C登录并连接到SQL Server数据库,c#,sql-server-2008,login,C#,Sql Server 2008,Login,我试图在一个用C构建的网站上进行简单的登录,但我无法连接到数据库,如果在postbackurl中的表单属性中我定义了登录/inicio.aspx后必须去哪里,我的应用程序会发送用户,而不检查该用户是否存在,如果我不这样做,什么也不会发生 在我的班上,我有: public DataSet sqlLogin(string usuario, string pass)//SOLO SE OCUPA { //SEOCUPA DATASERT YA QE NO SIRVE DATABALE Y E

我试图在一个用C构建的网站上进行简单的登录,但我无法连接到数据库,如果在postbackurl中的表单属性中我定义了登录/inicio.aspx后必须去哪里,我的应用程序会发送用户,而不检查该用户是否存在,如果我不这样做,什么也不会发生

在我的班上,我有:

public DataSet sqlLogin(string usuario, string pass)//SOLO SE OCUPA 
{
    //SEOCUPA DATASERT YA QE NO SIRVE DATABALE Y EL DATASET SE LLENA CON ESE DATATABLE 
    string stSql = "select * from usuarios where usuario='"+usuario+"' and
pass='"+pass+"'";
    Bd miBd = new Bd();
    DataTable dt = miBd.sqlSelect(stSql);
    DataSet ds = new DataSet();
    ds.Tables.Add(dt);
    return ds;
}
在按钮的“我的表单”中:

protected void btnLogin_Click(object sender, EventArgs e)
{
    ClUsuario login = new ClUsuario();
    login.sqlLogin(txtUsuario.Text, txtPass.Text);

    try
    {
        Response.Redirect("/Inicio.aspx");
    }
    catch
    {
        lblMsg.Text = "usuario/password no validos";
    }
}

必须用此代码替换代码

protected void btnLogin_Click(object sender, EventArgs e)
{
    ClUsuario login = new ClUsuario();
    bool isAuthenticated = login.sqlLogin(txtUsuario.Text, txtPass.Text);
    if (isAuthenticated)
    {
        Response.Redirect("/Inicio.aspx");
    }
    else    
    {
        lblMsg.Text = "usuario/password no validos";
    }
}


And return bool in your sqlLogin

try with this code 

if(dt.Rows.Count > 0)
{
   return true;
} 
return false;
试试这个:

try
{
    var ds = login.sqlLogin(txtUsuario.Text, txtPass.Text);
    if(ds.Tables[0].rows.count > 0) {
      Response.Redirect("/Inicio.aspx");
    }
    else {lblMsg.Text = "usuario/password no validos";}

}
catch
{
    lblMsg.Text = "Error Occurred!";
}

还可以尝试在查询中使用sql参数

如果让它运行,代码将容易受到SQL注入攻击。您可以通过使用参数化命令而不是将字符串连接到以“string stSql=…”开头的行来缓解这种情况。请看这里的解释:谢谢,现在我正在测试这段代码,但是我有一个问题,我必须在类中重新放置代码ifdt.Rows.Count????提前谢谢。很高兴能解决您的问题,是的,您可以用dt.Rows.Count替换,但是如果我使用bool获取代码,身份验证将保留基于true或false的概念。在类中必须这样吗?因为我不明白。。。公共数据集sqlLoginstring usuario,string pass string stSql=select*from usuarios,其中usuario='+usuario+'和pass='+pass+';Bd miBd=新的Bd;DataTable dt=miBd.sqlSelectstSql;数据集ds=新数据集;ds.Tables.Adddt;返回ds;如果dt.Rows.Count>0{返回true;}返回false;}准确地说,如果您有时间,请转到msdn,使用ADO.Net搜索数据访问,以便使用例如服务中的参数Yes public DataSet sqlLogin现在应该是public boolean sqlLogin您应该按现在的方式修改catch子句:它当前创建的输出usuario/password no validos不正确,而且它只会吞噬有用的异常信息。