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