|
如何实现将窗口控件输入的值和数据库中的值进行查询匹配?以下是已经写好的 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,打断点单步调试。
|