在位置 0 处没有任何行。

时间:2022-12-03 19:05:19
 private void Button_Click_1(object sender, RoutedEventArgs e)
        {        
          DataTable table = SqlHelper.ExecuteDataTable("select * from T_User where UserName=@UserName", new SqlParameter("@username", loginuser.Text));
          if(table.Rows.Count<=0)           
          MessageBox.Show("用户名不存在!请重新输入");   
          if(table.Rows.Count>0)
          MessageBox.Show("用户名重复");
           DataRow row = table.Rows[0];  在这一行提示在位置 0 处没有任何行。
          string pass = (string)row["password"];
          if(pass!=loginpass.Password)
          MessageBox.Show("密码错误!请重新输入");
          else
          MessageBox.Show("登入成功!");
        }

请各位帮我解答一下

9 个解决方案

#1


table  是空的。

#2


if(table.Rows.Count<=0)           
          MessageBox.Show("用户名不存在!请重新输入");   
          if(table.Rows.Count>0)
          MessageBox.Show("用户名重复");
这什么逻辑
不是用户名不存在,就是用户名重复,没有正常情况吗?

而且,已经异常了,不return,还继续往下走,那能对吗

#3


你先把自己的逻辑捋捋清楚,再谈代码的问题
代码是实现逻辑的
你先不要急着码代码
把代码都翻译成中文,自己好好读读,看通顺吗??

#4


如果(表里行数<=0)弹出对话框,然后继续往下走
如果(表里行数>0)弹出对话框,继续往下走
获取第一行的数据

前面表里都已经没有行了,还获取第一行的数据,能获取到吗

#5


 private void Button_Click_1(object sender, RoutedEventArgs e)
        {        
          DataTable table = SqlHelper.ExecuteDataTable("select * from T_User where UserName=@UserName", new SqlParameter("@username", loginuser.Text));
          if(table.Rows.Count<=0)           
          {
                    MessageBox.Show("用户名不存在!请重新输入");   
                    return;
          }
          if(table.Rows.Count>0)
          {
                    MessageBox.Show("用户名重复");
                    return;
          }
          DataRow row = table.Rows[0];  在这一行提示在位置 0 处没有任何行。
          string pass = (string)row["password"];
          if(pass!=loginpass.Password)
          MessageBox.Show("密码错误!请重新输入");
          else
          MessageBox.Show("登入成功!");
        }

#6


这样不对,这样永远return,不可能往下走的
楼主你做的到底是登陆还是注册
注册时才判断用户是否重复
登陆时判断用户是否存在

你把两个功能写到一个按钮里,后果就是2个功能都实现不了

#7


引用 楼主 lichenbo 的回复:
 private void Button_Click_1(object sender, RoutedEventArgs e)
        {        
          DataTable table = SqlHelper.ExecuteDataTable("select * from T_User where UserName=@UserName", new SqlParameter("@username", loginuser.Text));
          if(table.Rows.Count<=0)           
          MessageBox.Show("用户名不存在!请重新输入");   
          if(table.Rows.Count>0)
          MessageBox.Show("用户名重复");
           DataRow row = table.Rows[0];  在这一行提示在位置 0 处没有任何行。
          string pass = (string)row["password"];
          if(pass!=loginpass.Password)
          MessageBox.Show("密码错误!请重新输入");
          else
          MessageBox.Show("登入成功!");
        }

请各位帮我解答一下


断点看看table.Rows为何没有数据就知道。

#8


select * from T_User where UserName=@UserName

这个执行后,看看结果。

#9


引用 7 楼 smthgdin 的回复:
Quote: 引用 楼主 lichenbo 的回复:

 private void Button_Click_1(object sender, RoutedEventArgs e)
        {        
          DataTable table = SqlHelper.ExecuteDataTable("select * from T_User where UserName=@UserName", new SqlParameter("@username", loginuser.Text));
          if(table.Rows.Count<=0)           
          MessageBox.Show("用户名不存在!请重新输入");   
          if(table.Rows.Count>0)
          MessageBox.Show("用户名重复");
           DataRow row = table.Rows[0];  在这一行提示在位置 0 处没有任何行。
          string pass = (string)row["password"];
          if(pass!=loginpass.Password)
          MessageBox.Show("密码错误!请重新输入");
          else
          MessageBox.Show("登入成功!");
        }

请各位帮我解答一下


断点看看table.Rows为何没有数据就知道。


提示在位置 0 处没有任何行。
那就是table为空。重新理清思路再,撸代码吧。

#1


table  是空的。

#2


if(table.Rows.Count<=0)           
          MessageBox.Show("用户名不存在!请重新输入");   
          if(table.Rows.Count>0)
          MessageBox.Show("用户名重复");
这什么逻辑
不是用户名不存在,就是用户名重复,没有正常情况吗?

而且,已经异常了,不return,还继续往下走,那能对吗

#3


你先把自己的逻辑捋捋清楚,再谈代码的问题
代码是实现逻辑的
你先不要急着码代码
把代码都翻译成中文,自己好好读读,看通顺吗??

#4


如果(表里行数<=0)弹出对话框,然后继续往下走
如果(表里行数>0)弹出对话框,继续往下走
获取第一行的数据

前面表里都已经没有行了,还获取第一行的数据,能获取到吗

#5


 private void Button_Click_1(object sender, RoutedEventArgs e)
        {        
          DataTable table = SqlHelper.ExecuteDataTable("select * from T_User where UserName=@UserName", new SqlParameter("@username", loginuser.Text));
          if(table.Rows.Count<=0)           
          {
                    MessageBox.Show("用户名不存在!请重新输入");   
                    return;
          }
          if(table.Rows.Count>0)
          {
                    MessageBox.Show("用户名重复");
                    return;
          }
          DataRow row = table.Rows[0];  在这一行提示在位置 0 处没有任何行。
          string pass = (string)row["password"];
          if(pass!=loginpass.Password)
          MessageBox.Show("密码错误!请重新输入");
          else
          MessageBox.Show("登入成功!");
        }

#6


这样不对,这样永远return,不可能往下走的
楼主你做的到底是登陆还是注册
注册时才判断用户是否重复
登陆时判断用户是否存在

你把两个功能写到一个按钮里,后果就是2个功能都实现不了

#7


引用 楼主 lichenbo 的回复:
 private void Button_Click_1(object sender, RoutedEventArgs e)
        {        
          DataTable table = SqlHelper.ExecuteDataTable("select * from T_User where UserName=@UserName", new SqlParameter("@username", loginuser.Text));
          if(table.Rows.Count<=0)           
          MessageBox.Show("用户名不存在!请重新输入");   
          if(table.Rows.Count>0)
          MessageBox.Show("用户名重复");
           DataRow row = table.Rows[0];  在这一行提示在位置 0 处没有任何行。
          string pass = (string)row["password"];
          if(pass!=loginpass.Password)
          MessageBox.Show("密码错误!请重新输入");
          else
          MessageBox.Show("登入成功!");
        }

请各位帮我解答一下


断点看看table.Rows为何没有数据就知道。

#8


select * from T_User where UserName=@UserName

这个执行后,看看结果。

#9


引用 7 楼 smthgdin 的回复:
Quote: 引用 楼主 lichenbo 的回复:

 private void Button_Click_1(object sender, RoutedEventArgs e)
        {        
          DataTable table = SqlHelper.ExecuteDataTable("select * from T_User where UserName=@UserName", new SqlParameter("@username", loginuser.Text));
          if(table.Rows.Count<=0)           
          MessageBox.Show("用户名不存在!请重新输入");   
          if(table.Rows.Count>0)
          MessageBox.Show("用户名重复");
           DataRow row = table.Rows[0];  在这一行提示在位置 0 处没有任何行。
          string pass = (string)row["password"];
          if(pass!=loginpass.Password)
          MessageBox.Show("密码错误!请重新输入");
          else
          MessageBox.Show("登入成功!");
        }

请各位帮我解答一下


断点看看table.Rows为何没有数据就知道。


提示在位置 0 处没有任何行。
那就是table为空。重新理清思路再,撸代码吧。