如何在要从数据库写入/读取的类中存储60个整数?

时间:2019-06-19 14:40:22

标签: java android sqlite android-sqlite

我正在设置一个应用程序,以跟踪射箭得分。每个芽由60支箭组成,范围从0到10。设置类以存储每个箭头分数,然后将其写入SQLite数据库的最佳方法是什么?

我可以为每个箭头设置一个变量,但这似乎效率很低。这样做的更好方法是什么?

public class Portsmouth {

    private int id;
    Date date;
    private int arrow1;
    private int arrow2;
    private int arrow3;
    ...
    private int arrow60;

}

5 个答案:

答案 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>";
}