1 回答
TA贡献1848条经验 获得超10个赞
这不是您与数据库交互的方式。编写一个User类来存储用户名和密码。然后编写一个数据库类来读取文本文件并创建 User 对象的 ArrayList。然后使用 User.name 进行搜索,并在登录前检查 User.password 进行验证。
数据库会将文本文件中的数据“加载”到 ArrayList 中,这将是您的程序将与之交互的内容。如果您想重写文本文件,请编写一个保存函数来清除并打印到相关文件。
这是一个数据库类的示例(来自我的一个旧项目),它以以下格式读取学生的数据: name:HARSH|PID:12|major:null|minor:null|CGPA:4.100000|college:null|email:abcd@gmail.com
import java.util.*;
import java.text.*;
import java.time.*;
import java.io.*;
public class Database{
public List<Student> studentList;
private long lastModified;
@SuppressWarnings("unchecked")
public Object loadDb()
{//Loads the database from file.
File data = new File("database.db");
if(lastModified == data.lastModified())
{
return studentList;//Returning main memory;
}
Scanner sc;
try
{
sc = new Scanner(data).useDelimiter("\n");//To get individual lines.
String line;
if(studentList!=null)
{//Clearing main memory.
studentList.clear();
}
else
{//Creating new main memory.
studentList = new ArrayList<Student>();
}
while(sc.hasNext())
{
line = sc.next();
Scanner l = new Scanner(line).useDelimiter("\\|");//To get info
String name, PID, major, minor, cgpaSt, college, email;
name = l.next().split(":")[1];
PID = l.next().split(":")[1];
major = l.next().split(":")[1];
minor = l.next().split(":")[1];
cgpaSt = l.next().split(":")[1];
college = l.next().split(":")[1];
email = l.next().split(":")[1];
double CGPA = Double.valueOf(cgpaSt);
Student stud = new Student(name,PID, major, minor, CGPA, college, email);//Creating new student with same info.
studentList.add(stud);//Adding the student to memory.
}
sc.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return studentList;
}
@SuppressWarnings("unchecked")
public void updateDb(Object studList)
{//Updates the database.
File data = new File("database.db");
PrintWriter fs;
try
{
fs = new PrintWriter(data);
}
catch(IOException e)
{
System.out.println("IO Exception!");
return;
}
fs.flush();
ArrayList<Student>studs = (ArrayList<Student>)studList;
for(int i = 0;i<studs.size();i++)
{
fs.print(studs.get(i).toString());
if(i != studs.size() -1)
{
fs.print("\n");
}
}
fs.close();
lastModified = data.lastModified();
loadDb();//Loading updated database.
}
}
您必须toString()为您的用户类编写一个函数,并根据您的格式修改读数。Database userData = new Database();这将允许您在中心类中创建一个变量。然后,您可以与studentList(在您的例子中为userList)交互,并搜索该用户,然后检查他们的密码是否正确。
添加回答
举报