C# c语言中断开连接体系结构的登录表单#

C# c语言中断开连接体系结构的登录表单#,c#,.net,database,winforms,C#,.net,Database,Winforms,我正在使用Visual Studio 2008创建windows应用程序。我想以断开连接的方式创建一个登录表单。我面临的一个问题是,当我试图检查数据表是否已填充时,它显示它始终已填充 登录按钮的代码: try { //getting connectionString mcc = new myConnectionClass(); conString = mcc.MyConnection;

我正在使用Visual Studio 2008创建windows应用程序。我想以断开连接的方式创建一个登录表单。我面临的一个问题是,当我试图检查数据表是否已填充时,它显示它始终已填充

登录按钮的代码:

try
        {
            //getting connectionString
            mcc = new myConnectionClass();
            conString = mcc.MyConnection;
            //opening connection con
            con = new SqlConnection(conString);
            string queryString = "select * from LOGIN_TABLE where LOGIN_ID = @LOGIN_ID and LOGIN_PASSWORD = @LOGIN_PASSWORD";
            //dataset ds , SqlDataAdapter sda
            ds = new DataSet();
            sda = new SqlDataAdapter();
            //sqlcommand 
            cmd = new SqlCommand(queryString, con);
            cmd.Parameters.Add(new SqlParameter("LOGIN_ID", txtLogin.Text));
            cmd.Parameters.Add(new SqlParameter("LOGIN_PASSWORD", txtPass.Text));
            sda.SelectCommand = cmd;

            sda.Fill(ds, "LOGIN_TABLE");
            //datatable dt
            dt = ds.Tables["LOGIN_TABLE"];
            //checking is datatable is empty 
            if (dt != null)
            {
                MessageBox.Show("Login Successed");
            }
            else
            {                   
                MessageBox.Show("Login Failed");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally
        {
            ds.Clear();
            dt.Clear();
        }

您的错误在于检查

if(dt != null)
如果您的登录\u表存在,则总是正确的

您需要检查行数

if(dt.Rows.Count != 0)

我还要说,从安全角度来看,在数据库中存储登录e密码不是一个好主意

你能告诉我是否可以做些额外的事情来改进这个代码吗?在你的SqlConnection周围使用“using”关键字来确保正确关闭和处理这个资源。你告诉我在数据库中存储登录名和密码不是一个好主意,那么在哪里存储它存储用户密码的散列,而不是密码本身。当用户登录时,计算其输入的哈希值,并将其与存储在数据库中的值进行比较。如果你的数据库遭到破坏,只会泄露密码的散列值,而不会泄露密码本身。@Tung:阿门!应该纹身在开发者左手的背面。