我正在设置一个应用程序,以跟踪射箭得分。每个芽由60支箭组成,范围从0到10。设置类以存储每个箭头分数,然后将其写入SQLite数据库的最佳方法是什么?
我可以为每个箭头设置一个变量,但这似乎效率很低。这样做的更好方法是什么?
public class Portsmouth {
private int id;
Date date;
private int arrow1;
private int arrow2;
private int arrow3;
...
private int arrow60;
}
答案 0 :(得分:3)
只需使用这样的整数数组:
import java.lang.System; //imported by default
public class Portsmouth {
private int id;
Date date;
private int[] arrow;
public Portsmouth(int id, Date data, int[] arr){
this.id = id;
this.date = date;
arrow = new int[60];
System.arraycopy(arr, 0, arrow, 0, 60);
/**for(int i=0;i<60;i++){
arrow[i] = arr[i];
}**/
}
}
答案 1 :(得分:2)
使用int[]
数组或List<Integer>
集合,而不是一个一个地定义字段。
为将行插入数据库而运行的SQL取决于您的架构,例如用60列vs 60行对表格进行非规范化,每个箭头一个。通常,人们可以使用DAO之类的模式将域模型与模式分开。
答案 2 :(得分:0)
我建议使用Arrow类,该类的分数为1-10。然后,在另一个称为Shoot的类中的ILIST箭头。然后,我将想象您还有另一个锦标赛和/或射击类,并且在Shoot类中包含属性。如果您愿意,可以尝试一下,我可以扩展。
答案 3 :(得分:0)
如果计划将所有信息推入/拉入数据库,则移动此数据的一种方法是使用Java Persistence API (JPA).,这样可以轻松地推入或拉出数据。 JPA的局限性在于,行中的每一列都必须具有其自己的变量,因此,正如您所说的那样,您最终将获得许多字符串。请注意,JPA要求使用某种数据库密钥。
幸运的是,如果您想增加数据,那么就很容易了:
ul
在不直接与数据库一起使用时,您也可以使用some rather clever ways来显示/获取对此信息的访问,以防止调用类似Java Reflection API之类的信息。
答案 4 :(得分:-1)
但是您为什么给班级朴茨茅斯命名?最好使所有功能都可用。也许是三个类(3个数据库表)。
$url = "https://cdn.animenewsnetwork.com/encyclopedia/api.xml?title=1";
$result = simplexml_load_file($url);
foreach ($result->xpath("//info[@type='Genres']") as $data) {
echo $data['type']." : " .(string)$data. "<br>";
}