黑马程序员技术交流社区

标题: 数据库操作问题 [打印本页]

作者: 陈育梅    时间: 2012-11-1 10:36
标题: 数据库操作问题
本帖最后由 陈育梅 于 2012-11-1 10:45 编辑
  1. using (SqlCommand cmd = conn.CreateCommand())
  2. {
  3. cmd.CommandText = "select count(*) from User_T where Username=@name ";
  4. cmd.Parameters.Add(new SqlParameter("name", txtusername.Text));
  5. using (SqlDataReader reader = cmd.ExecuteReader())
  6. {
  7. if (reader.Read())
  8. {
  9. int errortime = reader.GetInt32(reader.GetOrdinal("Errortime"));
  10. if (errortime > 3)
  11. {
  12. MessageBox.Show("登录次数过多,禁止登录!");
  13. return;
  14. }
  15. string dbpassword = reader.GetString(reader.GetOrdinal("Password"));
  16. if (dbpassword == txtpassword.Text)
  17. {
  18. MessageBox.Show("登录成功");
  19. }
  20. else
  21. {
  22. IneErrortime();
  23. MessageBox.Show("登录失败");
  24. }
  25. }
  26. else
  27. {
  28. MessageBox.Show("用户名不存在");
  29. }
  30. }
  31. }
复制代码
运行时提示:Errortime 确保列表中最大索引小于列表大小!求指点,谢谢

作者: 郑鹏    时间: 2012-11-1 12:41
可以看一下你的数据库表吗
作者: 陈育梅    时间: 2012-11-1 13:45
ID      int
作者: 陈育梅    时间: 2012-11-1 13:48
ID                  int
Username        nchar(10)
Password         nchar(10)
Errortime         int
作者: 陈育梅    时间: 2012-11-1 13:50
郑鹏 发表于 2012-11-1 12:41
可以看一下你的数据库表吗


我知道哪里出错了,03.cmd.CommandText = "select count(*) from User_T where Username=@name ";
这样查询出来就一列,这条SQL语句中没有“ErrorTimes”列,在reader里面取值就会报错。 改成cmd.CommandText = "select * from User_T where Username=@name ";

作者: 郑鹏    时间: 2012-11-1 16:52
陈育梅 发表于 2012-11-1 13:50
我知道哪里出错了,03.cmd.CommandText = "select count(*) from User_T where Username=@name ";
这样查 ...


对!没错!不好意思啊!我没看出来!学艺不精啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2