62,046
社区成员
发帖
与我相关
我的任务
分享
//这个是登陆代码
//getpost.cs
public string Login_In(string UserName, string UserPass)
{
if (UserName.Length <= 0 || UserPass.Length <= 0)
{
return "Error";
}
string sql = "select Userpass,Salt from Users where UserName=@UserName";
SqlParameter[] sp = new SqlParameter[]{
new SqlParameter("@UserName", UserName)
};
SqlDataReader sdr = DB.ExecRead(sql,sp);
try
{
if (sdr.Read())
{
if (GetWay.MD5(GetWay.MD5(UserPass) + sdr["Salt"].ToString()) == sdr["UserPass"].ToString())
{
return "OK";
}
else
{
return "Error";
}
}
else
{
return "Error";
}
}
finally
{
sdr.Close(); //如果不立刻关闭连接池其他查询没有返回结果!,开始没有添加这句代码,任何查询在这刻开始没有返回结果!
//但是听了sandy说:sqldatareader 是独占链接的,但它只是独占连接池中的一个链接,其他空闲链接还是可用的!
//希望大家看看我的代码有什么问题没!
}
}
//分割线--------------------------------------------------------
//db.cs
//DB.execread
public static SqlDataReader ExecRead(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Sqlconn);
SqlDataReader sdr = null;
cmd.Parameters.AddRange(values);
sdr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
return sdr;
}
//分割线--------------------------------------------------------
//页面加载有一段代码
if (!IsPostBack)
{
DB.bing("Select * from Links", Repeater1);
}
/* 我的导航采用了这样的方式加载
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<li><a href="<%# Eval("Href")%>" target="_blank"><%# Eval("Title")%></a></li>
</ItemTemplate>
</asp:Repeater>
*/
//--分割线----------------------db.cs
public static void bing(string strsql, Repeater Repeater1)
{
DataTable dt = GetDataSet(strsql);
if (dt.Rows.Count > 0)
{
Repeater1.DataSource = dt.DefaultView;
Repeater1.DataBind();
}
}
public static DataTable GetDataSet(string safeSql)
{
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(safeSql, Sqlconn);
SqlDataAdapter da = null;
da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}
/*
所以每次我登陆之后,导航便显示不出来,登陆之前还是可以的!
后来我就添加了这句代码!才解决!
sdr.Close();
*/
/*
但是这里我有个顾虑!
如果我的网站上线的时候!
有很多人使用,那么登陆这个过程肯定是不断的!
那么这样问题就来了,有人在访问,有人在登陆,
那么登陆的时候使用了sqldatareader!这样就会导致有一瞬间是无法返回结果集的!
请问这个怎么解决呢!//在不改用其他sqldata获取用户信息的情况下!
*/