如何实现将窗口控件输入的值和数据库中的值进行查询匹配?以下是已经写好的 public partial class Base { protected static string strConn = ConfigurationManager.ConnectionStrings["DatabaseConnection"].ConnectionString; public static int SqlExecuteNonQuery(string strSQL) { SqlConnection myCn = new SqlConnection(strConn);//设置数据库连接对象 SqlCommand myCmd = new SqlCommand(strSQL, myCn);//设置Command对象 try { myCn.Open();//打开数据库连接 myCmd.ExecuteNonQuery();//执行SQL语句 return 0; } catch (System.Data.SqlClient.SqlException e) { throw new Exception(e.Message); } finally { myCmd.Dispose(); myCn.Close();//关闭数据库连接 } } protected static DataSet SqlDataSet(string strSQL) { SqlConnection myCn = new SqlConnection(strConn); try { myCn.Open(); SqlDataAdapter sda = new SqlDataAdapter(strSQL, myCn); DataSet ds = new DataSet(); sda.Fill(ds); return ds; } catch (System.Data.SqlClient.SqlException e) { throw new Exception(e.Message); } finally { myCn.Close(); } } } 这是Base类,web.config中已经配置好了 protected void Login_Click(object sender, EventArgs e) { /*读取用户名和密码信息*/ /*创建用户对象,判断当前用户身份和信息是否正确*/ cs_Admin admin = new cs_Admin(); admin.userID = UName.Text.Trim(); admin.Password = Pwd.Text.Trim(); if (txtCode.Text.Trim() == (string)Session["check"]) if (admin.GetAdmin()) { Session["userID"] = UName.Text.Trim(); Session["Password"] = Pwd.Text.Trim(); Response.Redirect("~\index.aspx"); } else { Response.Write("<Script>alert(""用户名或密码错误!"");history.back(-1);</Script>"); txtCode.Text = ""; } } 这是按钮响应,就是想请教一下GetAdmin的方法该怎么写?百度的然后自己改的如下: public class cs_Admin:Base //由类Base派生 { #region 属性,对应Admin中的字段 public string userID; public string Password; #endregion //类中定义属性与表Admin中的字段同名 public bool GetAdmin() { SqlConnection conn = new SqlConnection(strConn);//设置数据库连接对象 string strSQL="select count(id) from Admin where userID=@userID and Password=@Password"; SqlCommand cmd = new SqlCommand(strSQL, conn);//设置Command对象 cmd.Parameters.Add(new SqlParameter("@userID", userID)); cmd.Parameters.Add(new SqlParameter("@Password", Password)); //这里就是返回的结果 0 表示不匹配 1表示一条匹配 >1userid未设为唯一键或被SQL注入列如 try { string result = cmd.ExecuteScalar() + ""; conn.Dispose(); cmd.Dispose(); if (result == "0") { return false; } else { return true; } } catch { return false; } |
|
20分 |
在你的 string result = cmd.ExecuteScalar() + “” 语句这里设置断点,观察几个输入属性的值,然后单步执行几条语句看看流程。
不要随便写 try { } catch { return false; } 这种语句。当程序执行有异常时,你连哪条语句出错都不知道,还怎样立即进入调试器对抛出异常的调用栈进行调试?写try…catch你就丧失了调试能力,这种语句实际上通常只是在release版本中才(条件编译)出现的,在debug中则不出现。 |
其实怎么写、怎么抄这并无所谓,关键是你要知道一个程序员该调试程序,而不是只抄程序。 |
|
其实才刚刚接触c#然后书上写的不全,很多东西基本都没讲(比如如何调试就没说。。),老师也只是讲下控件的用法和属性。。
|
|
看看数据库里面的密码是加密的吗?
|
|
不是加密的 |
|
就不能踏踏实实一步一步调试么, 说不定已经报错了.
|
|
可否提供demo?帮你调试一把
|
|
10分 |
很同情你,可是像你这样的人太多了,不可能都帮助到。建议你学会自学。事实上,谁的老师不一样都是白痴。别人怎么学会的。还不是自学。
|
编程,要学会调试程序,这个很重要。
|
|
10分 |
打开你的项目,按F5,打断点单步调试。
|