jjzjj

c# - while 循环 C# 的登录系统问题

coder 2024-06-21 原文

我正在使用 C# 和 XAML 开发 Windows 商店应用程序。当尝试编码登录时,它会出现以下问题。在 while 循环系统内部不会传递给 else 语句,它会传递给 conn.Close();

我该如何解决这个问题?

这是我的登录按钮代码

    private async void button_login_Click(object sender, RoutedEventArgs e)
    {            
        string username = usernameInput.Text;
        string password = passwordInput.Password;

        try
        {
            string Query = "SELECT`tbl_user_std`.`user_id`,`tbl_user_std`.`username`,`tbl_user_std`.`pass`FROM `bcasdb`.`tbl_user_std`WHERE `tbl_user_std`.`username` = @UserName AND `tbl_user_std`.`pass` = @Password;";

            MySqlConnection conn = new MySqlConnection(BC

ASApp.DataModel.DB_CON.connection);
            MySqlCommand cmd = new MySqlCommand(Query, conn);
            cmd.Parameters.AddWithValue("@UserName", username);
            cmd.Parameters.AddWithValue("@Password", password);
            MySqlDataReader MyReader;
            conn.Open();                
            bool valid = false;                
            MyReader = cmd.ExecuteReader();
            while (MyReader.Read()) 
            {
                if (username == usernameInput.Text & password == passwordInput.Password)
                {                            
                    if (valid = true & this.Frame != null)
                     {
                         this.Frame.Navigate(typeof(StdinfoPage));
                     } 
                }
                else
                {
                    messageBox();
                }                    
            }
            conn.Close();
        }
        catch (Exception )
        {
        }
    }

最佳答案

根据您代码中的逻辑 - 如果您的数据库中没有用户具有指定的 usernamepassword - 那么服务器不会返回任何内容,并且循环 while (MyReader.Read()) 根本不会执行,else 条件下的语句也不会执行 - 所以你需要处理这种情况。我不认为你需要在这里循环,因为它不应该是两个或更多用户在你的数据库中具有相同的用户名/密码。

另请注意有关 && 运算符的其他答案。

下一个注释.... 查看语句 if (valid = true & this.Frame != null)。我想你的意思是在这种情况下检查 valid == true 。请注意,c# 相等运算符是 == 而不是 =

下一个注意 - 您已将 valid 变量分配给 false 并且在代码中的任何地方都没有更改它。所以 if (valid == true & this.Frame != null) 条件永远不会满足。 (顺便说一句 - 它可以简化为 if (valid & this.Frame != null))

结论。看起来您应该将带有 while 循环的代码片段更改为如下所示:

if (MyReader.Read() 
      && username == usernameInput.Text 
      && password == passwordInput.Password 
      && this.Frame != null
   )
    this.Frame.Navigate(typeof(StdinfoPage));
else
    messageBox();

而且我不确定 username == usernameInput.Text && password == passwordInput.Password 检查。从您的代码中看不太清楚,但它看起来是多余的。

关于c# - while 循环 C# 的登录系统问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26158740/

有关c# - while 循环 C# 的登录系统问题的更多相关文章

  1. ruby - 树顶语法无限循环 - 2

    我脑子里浮现出一些关于一种新编程语言的想法,所以我想我会尝试实现它。一位friend建议我尝试使用Treetop(Rubygem)来创建一个解析器。Treetop的文档很少,我以前从未做过这种事情。我的解析器表现得好像有一个无限循环,但没有堆栈跟踪;事实证明很难追踪到。有人可以指出入门级解析/AST指南的方向吗?我真的需要一些列出规则、常见用法等的东西来使用像Treetop这样的工具。我的语法分析器在GitHub上,以防有人希望帮助我改进它。class{initialize=lambda(name){receiver.name=name}greet=lambda{IO.puts("He

  2. ruby-on-rails - 在 Ruby 中循环遍历多个数组 - 2

    我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代

  3. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  4. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  5. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  6. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

  7. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  8. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  9. c# - 如何在 ruby​​ 中调用 C# dll? - 2

    如何在ruby​​中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL

  10. C# 到 Ruby sha1 base64 编码 - 2

    我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha

随机推荐