作业要求模拟数据库的操作,用文本文件做一些简单的增删改查
现在查有很多问题,望高手赐教^_^
例如:文本中的内容是:
ID NAME SEX AGE
0001 小丽 female 10
0002 小红 female 20
0005 小明 male 40
0006 小菜 male 20
0007 小菜 female 30 现在要查询的条件数不定,例如要查 ID为0001的 ,或者查 AGE 在 9~30,SEX 为female的记录,
又或者查 NAME 为小菜的,SEX为female的记录请教高手该怎样做才好,怎样才高效?谢谢``
现在查有很多问题,望高手赐教^_^
例如:文本中的内容是:
ID NAME SEX AGE
0001 小丽 female 10
0002 小红 female 20
0005 小明 male 40
0006 小菜 male 20
0007 小菜 female 30 现在要查询的条件数不定,例如要查 ID为0001的 ,或者查 AGE 在 9~30,SEX 为female的记录,
又或者查 NAME 为小菜的,SEX为female的记录请教高手该怎样做才好,怎样才高效?谢谢``
在组装sql语句时,从map里逐个读取!
比如你的ID为0001的 ,或者查 AGE 在 9~30,SEX 为female的记录;
a.先把你的StringBuilder的内容按照回车分隔一下.split("\n").这样得到每一行的数据.
b.然后用字符串的比对方式.类似的代码如下
List<String> result = new ArrayList<String>();
oneRow---你分隔后的每一行的数据.
String[] data = oneRow.split(" ");//每行以空格分隔.
if(data[0].equals("0001") && data[1].equals("小丽")){
result.add(data[0]+" "+data[1]+" "+data[2] + " " + data[3]);
}3.而修改和删除的时候你就在开始的StringBuilder中修改和删除.然后再从新写入文件即可.
比如你的ID为0001的 ,或者查 AGE 在 9~30,SEX 为female的记录;
a.先把你的StringBuilder的内容按照回车分隔一下.split("\n").这样得到每一行的数据.
b.然后用字符串的比对方式.类似的代码如下
List <String> result = new ArrayList <String>();
oneRow---你分隔后的每一行的数据.
String[] data = oneRow.split(" ");//每行以空格分隔.
if(data[0].equals("0001") && data[1].equals("小丽")){
result.add(data[0]+" "+data[1]+" "+data[2] + " " + data[3]);
} 3.而修改和删除的时候你就在开始的StringBuilder中修改和删除.然后再从新写入文件即可.
1.生成条件字符串。如:
class Condition {
String name;//查询的字段名称
String option;//操作符.默认就是=号
String value;//值
} 把条件都封装到Condition后,然后加入到List中。 public String searchSQL(List<Condition> conditions) {
StringBuilder sb = new StringBuilder();
.....//生成类似形式data[0].equals("0001") && data[1].equals("小丽") ;
return sb.toString();
}2.下载MVEL包,MVEL你可以理解成Javascript中的EVAL。
public boolean currentRowContains(String conditionsStr) {
return MVEL.eval(conditionsStr); }