我正在尝试建立一个具有登录功能和注册功能的密码数据库。通过将名称,姓氏,电子邮件和密码保存到一个.txt文件中,我可以使用注册功能。但是,我无法使程序读取一行,然后检查用户输入的密码是否与该密码匹配。 .txt文件。 到目前为止,这是我正在使用的工具。
//reading from file
int counter = 0;
private void Enter_btn_Click(object sender, EventArgs e)
{
// makes a new file called password.txt
StreamReader sr = new StreamReader("password.txt");
string Line = "";
//this reads all lines in the .txt file
while ((Line = sr.ReadLine())!=null)
{
//loops through each line.
counter++;
break;
}
}
我希望while循环仅查看一行,然后输入用户名,然后再检查另一行并验证用户名是否正确。
counter++;
break;
我希望它经过第一行然后中断并到达第一行。我正在使用Form Application在Visual Studio中工作。
答案 0 :(得分:1)
您可能想更改插入数据的方式。
尝试在值之间插入制表符(\ t),并以(\ n)结尾记录,以便您可以读取整个文件并使用String.Split('\ n'),这将为您提供单独的记录并再次进行拆分String.Split('\ t')进行单个记录以获取用户名和密码组合。.
然后您就可以使用逻辑来验证凭据
答案 1 :(得分:0)
您可以在不使用循环的情况下使用if语句,但必须手动执行。
例如:
//reading from file
int counter = 0;
private void Enter_btn_Click(object sender, EventArgs e)
{
// makes a new file called password.txt
StreamReader sr = new StreamReader("password.txt");
string usr = "";
string pass = "";
pass = sr.ReadLine();
if(pass != null)
{
//You get the password here now you can do the logic
}
else
{
//There is no line should throw an exception for instance
}
//Now lets get the username
usr = sr.ReadLine();
if(usr != null)
{
//You get the usr here
}
else
{
//There is no 2nd line should throw an exception for instance
}
}
答案 2 :(得分:0)
您可以执行以下操作:
StreamReader sr = new StreamReader("password.txt");
string user;
while((user = sr.ReadLine()) != null)
{
string password;
if ((password = sr.ReadLine()) == null) {
// TODO: Throw some exception for example Illegal State.
}
if (string.Equals(user, #user)) {
if (string.Equals(password , #password)) {
sr.Close();
// SUCCESS
} else {
// WRONG PASSWORD
}
}
}
sr.Close();
// WRONG USER
答案 3 :(得分:0)
您可以先阅读第一行,然后再逐行遍历。
int counter = 0;
private void Enter_btn_Click(object sender, EventArgs e)
{
// makes a new file called password.txt
StreamReader sr = new StreamReader("password.txt");
string Line = sr.ReadLine();
//this reads all chars in the line
foreach (var ch in Line)
{
//loops through each char.
counter++;
break;
}
}
如果只需要长度,则可以使用Line.length
。