菜鸟请教个问题,我认为代码每有问题。请教高手
using System;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (CookieHelper_Cai.HaveCookie("WaterFee", "Uname"))
{
Response.Redirect("HomeS.aspx");
}
else
{
}
}
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
string names = "";
string pwd = "", ip = "";
names = this.UnameS.Text.Trim();
pwd = this.Pawd.Text.Trim();
if (!string.IsNullOrEmpty(names) && !string.IsNullOrEmpty(pwd))
{
ip = RequestSafe_Cai.GetIP();
pwd = MD5_Cai.Encrypt(pwd);
if (AdminUserSExecutSqlS.Admin_User_LoginIn(names, pwd, ip))
{
DataTable dt = new DataTable();
dt = AdminUserSExecutSqlS.Admin_User_ShowOneByUname(names);
if (dt != null)
{
if (dt.Rows.Count > 0)
{
CookieHelper_Cai.AddCookie("WaterFee", "Uname", names, 1);
CookieHelper_Cai.AddCookie("WaterFee", "Uid", dt.Rows[0]["ad_ID"].ToString(), 1);
CookieHelper_Cai.AddCookie("WaterFee", "Utruename", System.Web.HttpUtility.UrlEncode(dt.Rows[0]["ad_userTrueName"].ToString()), 1);
Response.Redirect("Default.aspx");
}
else
{
JSscript.AlertAndGoTo("用户名密码正确,但未设定真实姓名,请联系管理员", "Default.aspx");
Response.End();
}
}
else
{
JSscript.AlertAndGoTo("用户名密码正确,但未设定真实姓名,请联系管理员", "Default.aspx");
Response.End();
}
}
else
{
JSscript.AlertAndGoTo("登录失败,可能用户名密码不正确", "Default.aspx");
Response.End();
}
}
else
{
JSscript.AlertAndGoTo("帐号和密码都不能为空", "Default.aspx");
Response.End();
}
}
}
有关的cs片断是:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
/// <summary>
///AdminUserSExecutSqlS 的摘要说明
/// </summary>
public class AdminUserSExecutSqlS
{
public AdminUserSExecutSqlS()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 添加用户
/// </summary>
/// <param name="uname"></param>
/// <param name="upawd"></param>
/// <param name="utruename"></param>
/// <returns></returns>
public static bool Admin_User_Add(string uname,string upawd,string utruename)
{
string Sqls = "INSERT INTO [CaiZ_Admin_UserS] ([ad_userName] ,[ad_userPwd] ,[ad_userTrueName],[ad_loginTime]) VALUES ";
Sqls += " (@ad_userName ,@ad_userPwd ,@ad_userTrueName,@ad_loginTime)";
SqlParameter[] ParmS = new SqlParameter[] {
new SqlParameter("@ad_userName",uname),
new SqlParameter("@ad_userPwd",upawd),
new SqlParameter("@ad_userTrueName",utruename),
new SqlParameter("@ad_loginTime",System.DateTime.Now),
};
return SQLHelper.ExecuteSql(Sqls, ParmS) > 0;
}
/// <summary>
/// 用户是否为删除过的用户
/// </summary>
/// <param name="uname"></param>
/// <returns></returns>
public static bool IsDelByUserS(string uname)
{
string Sqls = "select ISNULL((select ad_id from CaiZ_Admin_UserS where ad_userName='" + uname + "'),0)";
return Convert.ToInt32(SQLHelper.GetSingle(Sqls)) > 0;
}
/// <summary>
/// 显示某一个用户
/// </summary>
/// <param name="uname"></param>
/// <param name="upawd"></param>
/// <param name="utruename"></param>
/// <returns></returns>
public static DataTable Admin_User_ShowOneByUname(string uname)
{
DataTable dt = new DataTable();
DataSet ds = new DataSet();
string Sqls = "select ad_ID,[ad_userName] ,[ad_userPwd] ,[ad_userTrueName] ,[ad_loginCount] ,[ad_loginTime] ,[ad_loginIp] ,[ad_stateLock]";
Sqls += " FROM [CaiZ_Admin_UserS] where [ad_stateDel]=0 and [ad_userName]='" + uname + "'";
ds = SQLHelper.Query(Sqls);
if (ds.Tables.Count > 0)
{
dt = ds.Tables[0];
}
return dt;
}
/// <summary>
/// 显示某一个用户
/// </summary>
/// <param name="uname"></param>
/// <param name="upawd"></param>
/// <param name="utruename"></param>
/// <returns></returns>
public static DataTable Admin_User_List()
{
DataTable dt = new DataTable();
DataSet ds = new DataSet();
string Sqls = "select ad_ID,[ad_userName] ,[ad_userPwd] ,[ad_userTrueName] ,[ad_loginCount] ,[ad_loginTime] ,[ad_loginIp] ,[ad_stateLock]";
Sqls += " FROM [CaiZ_Admin_UserS] where [ad_stateDel]=0 ";
ds = SQLHelper.Query(Sqls);
if (ds.Tables.Count > 0)
{
dt = ds.Tables[0];
}
return dt;
}
/// <summary>
/// 显示某一个用户
/// </summary>
/// <param name="uname"></param>
/// <param name="upawd"></param>
/// <param name="utruename"></param>
/// <returns></returns>
public static DataTable Admin_User_ShowOneById(int id)
{
DataTable dt = new DataTable();
DataSet ds = new DataSet();
string Sqls = "select ad_ID,[ad_userName] ,[ad_userPwd] ,[ad_userTrueName] ,[ad_loginCount] ,[ad_loginTime] ,[ad_loginIp] ,[ad_stateLock]";
Sqls += " FROM [CaiZ_Admin_UserS] where [ad_stateDel]=0 and [ad_ID]=" + id + "";
ds = SQLHelper.Query(Sqls);
if (ds.Tables.Count > 0)
{
dt = ds.Tables[0];
}
return dt;
}
/// <summary>
/// 更新用户用户
/// </summary>
/// <param name="uname"></param>
/// <param name="upawd"></param>
/// <param name="utruename"></param>
/// <returns></returns>
public static bool Admin_User_Update(string utruename,int id)
{
string Sqls = "update [CaiZ_Admin_UserS] set [ad_userTrueName]=@ad_userTrueName ";
Sqls += " Where ad_ID=@ad_ID and ad_stateDel=0";
SqlParameter[] ParmS = new SqlParameter[] {
new SqlParameter("@ad_userTrueName",utruename),
new SqlParameter("@ad_ID",id),
};
return SQLHelper.ExecuteSql(Sqls, ParmS) > 0;
}
/// <summary>
/// 密码初始化
/// </summary>
/// <param name="uname"></param>
/// <param name="upawd"></param>
/// <param name="utruename"></param>
/// <returns></returns>
public static bool Admin_User_UpdatePwd(string upawd, int id)
{
string Sqls = "update [CaiZ_Admin_UserS] set [ad_userPwd]=@ad_userPwd ";
Sqls += "Where ad_ID=@ad_ID and ad_stateDel=0";
SqlParameter[] ParmS = new SqlParameter[] {
new SqlParameter("@ad_userPwd",upawd),
new SqlParameter("@ad_ID",id),
};
return SQLHelper.ExecuteSql(Sqls, ParmS) > 0;
}
/// <summary>
/// 密码初始化
/// </summary>
/// <param name="uname"></param>
/// <param name="upawd"></param>
/// <param name="utruename"></param>
/// <returns></returns>
public static bool Admin_User_Del(int id)
{
string Sqls = "update [CaiZ_Admin_UserS] set [ad_stateDel]=1 ";
Sqls += "Where ad_ID=@ad_ID and ad_stateDel=0";
SqlParameter[] ParmS = new SqlParameter[] {
new SqlParameter("@ad_ID",id),
};
return SQLHelper.ExecuteSql(Sqls, ParmS) > 0;
}
/// <summary>
/// 更新用户用户
/// </summary>
/// <param name="uname"></param>
/// <param name="upawd"></param>
/// <param name="utruename"></param>
/// <returns></returns>
public static bool Admin_User_LoginIn(string utruename, string pwd,string ip)
{
string Sqls = "update [CaiZ_Admin_UserS] set ad_loginCount=ad_loginCount+1,ad_loginTime=@ad_loginTime,ad_loginIp=@ad_loginIp";
Sqls += " Where [ad_userName]=@ad_userName and ad_userPwd=@ad_userPwd and ad_stateDel=0";
SqlParameter[] ParmS = new SqlParameter[] {
new SqlParameter("@ad_loginTime",System.DateTime.Now),
new SqlParameter("@ad_loginIp",ip),
new SqlParameter("@ad_userName",utruename),
new SqlParameter("@ad_userPwd",pwd),
};
return SQLHelper.ExecuteSql(Sqls, ParmS) > 0;
}
}
请教高手。
[解决办法]
从代码来看,应该会有问题
ip = RequestSafe_Cai.GetIP();
pwd = MD5_Cai.Encrypt(pwd);
if (AdminUserSExecutSqlS.Admin_User_LoginIn(names, pwd, ip))
建议断点查看一下是否names,或是pwd,或是ip是否是空的
如果是空的,对着查找就可以了。
[解决办法]
AdminUserSExecutSqlS这个东西是哪里来的?
[解决办法]
不实例化就可以直接用的吗?
[解决办法]
F11到这个函数里面去看Admin_User_LoginIn(names, pwd, ip)
[解决办法]
- C# code
if (new AdminUserSExecutSqlS.Admin_User_LoginIn(names, pwd, ip)) {}
[解决办法]
请使用try catch 然后一步步断点调试,有可能是你的字段类型不符合条件,查不出结果
[解决办法]
要一步步调试确认,首先 是不是AdminUserSExecutSqlS 这个对象出了问题?能不能调试到调用的方法呢?还是说参数的问题。。如果能调试进去那就是说明参数的问题了。。。比如说参数类型不符合要求会导致sql语句无法执行。。
[解决办法]
try catch 良好的习惯,能确定调试到哪一步出现了异常。。。
[解决办法]
public static bool Admin_User_LoginIn(string utruename, string pwd,string ip)
{
string Sqls = "update [CaiZ_Admin_UserS] set ad_loginCount=ad_loginCount+1,ad_loginTime=@ad_loginTime,ad_loginIp=@ad_loginIp";
Sqls += " Where [ad_userName]=@ad_userName and ad_userPwd=@ad_userPwd and ad_stateDel=0";
SqlParameter[] ParmS = new SqlParameter[] {
new SqlParameter("@ad_loginTime",System.DateTime.Now),
new SqlParameter("@ad_loginIp",ip),
new SqlParameter("@ad_userName",utruename),
new SqlParameter("@ad_userPwd",pwd),
};
return SQLHelper.ExecuteSql(Sqls, ParmS) > 0;
}
你方法里面的这句sql有问题:string Sqls = "update [CaiZ_Admin_UserS] set ad_loginCount=ad_loginCount+1,ad_loginTime=@ad_loginTime,ad_loginIp=@ad_loginIp";
ad_loginCount=ad_loginCount+1 写少了 @
[解决办法]
呵呵楼上好眼力哈。。果然是sql语句的问题咯。。
像这种访问数据的方法最好都是加try catch 便于调试,只要哪个地方出错就会马上跳到catch位置了。。
- C# code
public static bool Admin_User_LoginIn(string utruename, string pwd,string ip){try{ string Sqls = "update [CaiZ_Admin_UserS] set ad_loginCount=ad_loginCount+1,ad_loginTime=@ad_loginTime,ad_loginIp=@ad_loginIp"; Sqls += " Where [ad_userName]=@ad_userName and ad_userPwd=@ad_userPwd and ad_stateDel=0"; SqlParameter[] ParmS = new SqlParameter[] { new SqlParameter("@ad_loginTime",System.DateTime.Now), new SqlParameter("@ad_loginIp",ip), new SqlParameter("@ad_userName",utruename), new SqlParameter("@ad_userPwd",pwd), }; return SQLHelper.ExecuteSql(Sqls, ParmS) > 0; catch(...){...}}//只要你觉得会出现问题的地方都可以用它来监视}
[解决办法]
晕写错地方了,,catch写出来
[解决办法]
看看是否 引用了AdminUserSExecutSqlS类 所在的命名空间,明显这种错误是对象没实例化
[解决办法]
别加try catch
加的话
return SQLHelper.ExecuteSql(Sqls, ParmS) > 0;
catch(...){return false;}
[解决办法]
[解决办法]
string names, pwd, ip;
下个断点看看names, pwd, ip这三个变量的值是多少,为空的话肯定就会报错了。
[解决办法]
[解决办法]
[解决办法]
你还是调试下那个方法,看到了哪一行出的错。。
[解决办法]
传入参数为空值,LZ 调试一下 看看 传入的参数是否正确,应该就木有问题了!
[解决办法]
单步调试,看是否有值不就知道了