C# 使用C登录并连接到SQL Server数据库
我试图在一个用C构建的网站上进行简单的登录,但我无法连接到数据库,如果在postbackurl中的表单属性中我定义了登录/inicio.aspx后必须去哪里,我的应用程序会发送用户,而不检查该用户是否存在,如果我不这样做,什么也不会发生 在我的班上,我有: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
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不正确,而且它只会吞噬有用的异常信息。