这段查询代码是哪有问题,怎么一个参数能查出结果,两个参数就查不出。各层代码都列出,急用,谢谢
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);
你在这里设置断点,看参数传进去没有。
[解决办法]
string cmdText = string.format("select * from P_Admin where P_adminame='{0}' and P_adminpwd='{1}'",username,userpwd)
[解决办法]
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 { //用户名不存在 }