ASP.NET图书管理系统登陆界面问题

barcawilliam 2017-07-10 07:42:09
开始设计没问题,也能正常登陆,后来我在login.aspx中增加了超期提醒功能,登陆时自动检测用户是否有超期未归还的图书,有就弹处对话框。代码如下,黄色部分是我后来修改加进去的导致不能登陆的代码,请大家看下问题在哪。
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
{
//查询输入的用户及密码是否符合身份验证
string sSql = "select Role,Class,Name from Users where LoginId='" + username.Text + "' and PassWord='" + password.Text + "'";
SQL s = new SQL();
DataSet ds = s.DSSearch(sSql);
if (ds.Tables[0].Rows.Count > 0)
{
DataRow dr = ds.Tables[0].Rows[0];
if (dr["Role"].ToString() != DropDownList1.Text)
{
Page.RegisterStartupScript("alert", "<script>alert('权限选择错误!');</script>");
return;
}

//这部分是导致程序异常的代码
[color=#FFFF00] string sSql1 = "select lendtime, returntime from BookLend where lenduser=='" + username.Text + "'";
SQL s1 = new SQL ();
DataSet ds1 =s1.DSSearch (sSql1 );
DataRow dr2 = ds1.Tables[0].Rows[0];
TimeSpan ts=Convert.ToDateTime(dr2["returntime"].ToString()).Subtract(Convert.ToDateTime(dr2["lendtime"].ToString()));
int num = ts.Days;
if (num > 20)
{

Page.RegisterStartupScript("alert", "<script>alert('您有超期未归还的图书!');</script>");
return;
}

Session["Users"] = username.Text;
Session["Role"] = dr["Role"].ToString();
Session["Name"] = dr["Name"].ToString();
Response.Redirect("Main.aspx");

}
else
{
Page.RegisterStartupScript("alert", "<script>alert('密码错误!');</script>");
}
}
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
//清空数据
username.Text = "";
password.Text = "";
}
}
...全文
450 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
iggyd 2017-07-12
  • 打赏
  • 举报
回复
asgasdg阿斯顿和噶恶虎岗爱上啊泰国风情安慰她
  • 打赏
  • 举报
回复
而且你有没归还的书就return出去了,你这是只要不还书,就不许登陆的意思么……
  • 打赏
  • 举报
回复
lenduser== sql只有一个等号
barcawilliam 2017-07-12
  • 打赏
  • 举报
回复
谢谢大家的回复
秋的红果实 2017-07-11
  • 打赏
  • 举报
回复
TimeSpan ts=Convert.ToDateTime(dr2["returntime"].ToString()).Subtract(Convert.ToDateTime(dr2["lendtime"].ToString())); //int num = ts.Days; int num = ts.Day; if (num > 20) { Page.RegisterStartupScript("alert", "<script>alert('您有超期未归还的图书!');</script>"); return; }
IEEE_China 2017-07-11
  • 打赏
  • 举报
回复
错误提示什么了,,,
IEEE_China 2017-07-11
  • 打赏
  • 举报
回复
就这个意思吧,你试试下面这个,一样的错误

 public static  void test()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("id", typeof(int));
            dt.Columns.Add("title", typeof(string));
            Console.WriteLine(dt.Rows[0]);
        }
IEEE_China 2017-07-11
  • 打赏
  • 举报
回复
那就检查你这句 DataSet ds1 =s1.DSSearch (sSql1 );看看ds1里面是否有tables[0],如果有,检查tables[0]是否有数据。 在这句 DataRow dr2 = ds1.Tables[0].Rows[0];之前,你应该先判断,后赋值。如果数据都没有,你上来直接就rows[0], 跟你定义了一个数组 int [] arr,不赋值却直接使用arr[0]有什么区别?

 DataSet ds1 =s1.DSSearch (sSql1 );
 DataRow dr2 = ds1.Tables[0].Rows[0];
barcawilliam 2017-07-11
  • 打赏
  • 举报
回复
谢谢楼上的解答 把==改成=后确实没有之前的报错了,但是又出现了新的问题:1采用管理员权限登陆转到这个界面,采用教师权限登陆以后网页刷新仍然留在登陆界面如图
barcawilliam 2017-07-11
  • 打赏
  • 举报
回复
@IEEE_China
IEEE_China 2017-07-11
  • 打赏
  • 举报
回复
这句用了2个等号 where lenduser==

 [color=#FFFF00] <strong>string sSql1 = "select lendtime, returntime from BookLend where lenduser=='" + username.Text + "'";
barcawilliam 2017-07-11
  • 打赏
  • 举报
回复
这里提示是sql.cs报错,但是我并没有修改过这个文件的代码啊
barcawilliam 2017-07-11
  • 打赏
  • 举报
回复
之前没有发我系统抱错的图 这里补上
barcawilliam 2017-07-11
  • 打赏
  • 举报
回复
上一楼层的方法把days改称day以后报错如图,应该不是这样修改吧
barcawilliam 2017-07-10
  • 打赏
  • 举报
回复
这行代码是我发帖子时写的不是原文件里的
IEEE_China 2017-07-10
  • 打赏
  • 举报
回复
cs文件里不能些 html代码[color=#FFFF00] <strong>

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧