首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

这段查询代码是哪有有关问题,如何一个参数能查出结果,两个参数就查不出。各层代码都列出,用,多谢

2012-09-14 
这段查询代码是哪有问题,怎么一个参数能查出结果,两个参数就查不出。各层代码都列出,急用,谢谢C# codeUI层:

这段查询代码是哪有问题,怎么一个参数能查出结果,两个参数就查不出。各层代码都列出,急用,谢谢

C# code
UI层:    protected void Page_Load(object sender, EventArgs e)    { }    protected void Button1_Click(object sender, EventArgs e) //两参按钮    {        string username = TextBox1.Text.Trim();        string userpwd = TextBox2.Text.Trim();        DataTable dt = new P_AdminManager().SelectAdmin(username, userpwd);        int i = dt.Rows.Count;        if (i > 0)        {            TextBox1.Text = Convert.ToString(i);            TextBox2.Text = "登录成功";        }        else        {             TextBox1.Text = Convert.ToString(i);             TextBox2.Text = "登录失败";        }    protected void Button2_Click(object sender, EventArgs e) //一参按钮    {        string username = TextBox1.Text.Trim();        string userpwd = TextBox2.Text.Trim();        DataTable dt = new P_AdminManager().SelectByUser(username);//         int i = dt.Rows.Count;        if (i > 0)        {            TextBox1.Text = Convert.ToString(i);            TextBox2.Text = "登录成功";        }        else        {             TextBox1.Text = Convert.ToString(i);             TextBox2.Text = "登录失败";        }    }}BLL层:    public class P_AdminManager    {        private P_AdminDAO P_dao = null;        public P_AdminManager()        {            P_dao = new P_AdminDAO();        }        public DataTable SelectByUser(string un) //单参        {            return P_dao.SelectByUser(un);        }        public DataTable  SelectAdmin(string username, string userpwd)//双参        {            return P_dao.SelectAdmin(username,userpwd);        } }DLL层:    public class P_AdminDAO    {        private SQLHelper sqlhelper;        public P_AdminDAO()        {            sqlhelper = new SQLHelper();        }//单参――――――――――――――――――――――――        public DataTable SelectByUser(string un)         {            DataTable dt = new DataTable();            string cmdText = "select * from P_Admin where P_adminame=@P_adminame";            SqlParameter[] para = new SqlParameter[] {                 new SqlParameter("@P_adminame", un) };            dt = sqlhelper.ExecuteQuery(cmdText, para, CommandType.Text);            return dt;        }//双参―――――――――――――――――――――――――――        public DataTable  SelectAdmin(string username, string userpwd)        {            DataTable dt = new DataTable();            string cmdText = "select * from P_Admin where  P_adminame=@P_adminame and P_adminpwd=@P_adminpwd";//            SqlParameter[] paras = new SqlParameter[]{            new SqlParameter("@P_adminame",username),            new SqlParameter("@P_adminpwd",userpwd)};//                        dt = sqlhelper.ExecuteQuery(cmdText, paras, CommandType.Text);            return dt;        }}Sqlhelper类:    public class SQLHelper    {        private SqlConnection conn = null;        private SqlCommand cmd = null;        private SqlDataReader sdr = null;        public SQLHelper()        {            string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;                                         conn = new SqlConnection(connStr);        }        public SqlConnection GetConn()        {            if (conn.State == ConnectionState.Closed)            { conn.Open(); }            return conn;   }//带参查询        public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType ct)        {            DataTable dt = new DataTable();            cmd = new SqlCommand(cmdText, GetConn());            cmd.CommandType = ct;            cmd.Parameters.AddRange(paras);            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))            {                dt.Load(sdr);            }            return dt;    }}


我不知道怎么回事,传一个参数可以登录成功,两个参数就不行。是不是我的查询语句有问题,还是我用的代码有问题。


传一个参的结果是:i=1 登录成功;
传两个参的结果是:i=0 登录失败;

这里的代码基本完整,求大侠帮帮看看,急用,谢谢!!!




[解决办法]
把你的两个参数的SQL放在数据库里执行一下,看是否有返回结果
[解决办法]
这样试下
 public DataTable SelectAdmin(string username, string userpwd)
{
DataTable dt = new DataTable();
string cmdText = "select * from P_Admin where P_adminame='"+username+"' and P_adminpwd='"+userpwd+"'";//
//SqlParameter[] paras = new SqlParameter[]{
//new SqlParameter("@P_adminame",username),
//new SqlParameter("@P_adminpwd",userpwd)};//
dt = sqlhelper.ExecuteQuery(cmdText, null, CommandType.Text);
return dt;
}
调试下,把cmdText复制到数据库执行下,看下能不能查询到数据
[解决办法]
应该是这句有问题:cmd.Parameters.AddRange(paras);
你在这里设置断点,看参数传进去没有。
[解决办法]

C# code
   string cmdText = string.format("select * from P_Admin where P_adminame='{0}' and P_adminpwd='{1}'",username,userpwd)
[解决办法]
探讨

引用:

应该是这句有问题:cmd.Parameters.AddRange(paras);
你在这里设置断点,看参数传进去没有。

这里没问题,不过在这里设断点,还真发现问题了,我存入数据库的密码是经过MD5加密的,在查询时,没有进行转码,哈。不过也谢谢各位啦

[解决办法]
C# code
        P_AdminManager manager = new P_AdminManager();        string username = TextBox1.Text.Trim();        string userpwd = TextBox2.Text.Trim();        object result = manager.Login(username);        if(result!=null)        {                if(result.ToString().Trim().Equals(userpwd.Trim()))              {                     //验证成功               }               esle               {                    //密码错误                 }        }        else        {           //用户名不存在        } 

热点排行