cregithar 2020-11-06 17:16 采纳率: 78.9%
浏览 7
已采纳

关于mysql的查找问题

我在用Java swing写一个简单的练习系统,创建了一个试卷的实体,里面包含了20道题

数据库大概情况

public class practiceQuestion {
	public int practiceId;  //试卷id
	public int sum;        //该试卷有多少道题目
	public int question1; //存的是题目id
	public int question2;
	public int question3;
	public int question4;
	public int question5;
	public int question6;
	public int question7;
	public int question8;
	public int question9;
	public int question10;
	public int question11;
	public int question12;
	public int question13;
	public int question14;
	public int question15;
	public int question16;
	public int question17;
	public int question18;
	public int question19;
	public int question20;
	

}

但是这20道题不是所有的都会用得上,20道题只是限制最多只能加入20道题到这个试卷上,你也可以只加5道题到试卷上,这个时候其他15道题目就用不上了

然后就是进行mysql数据库层面的查找

//查询所有
	public List<practiceQuestion> getAll(){
		List<practiceQuestion> pqs = new ArrayList<>();
		
		String sql = "select * from practice_Question";
		
		try(Connection c = DBUtil.getConnection();){
			
			Statement s = c.createStatement();
			ResultSet rs = s.executeQuery(sql);
			
			while(rs.next()){
				practiceQuestion pq = new practiceQuestion();
				
				pq.practiceId = rs.getInt("practice_id");
				//这个是用到的题目总数,比如说你在创建试卷的时候只放进去5道题,那 sum = 5;
				pq.sum = rs.getInt("sum");
				
				//很多,即使有一些题目是没用到的,在查询的时候也要全部写出来
				pq.question1 = rs.getInt("question_1");
				pq.question2 = rs.getInt("question_2");
				pq.question3 = rs.getInt("question_3");
				pq.question4 = rs.getInt("question_4");
				pq.question5 = rs.getInt("question_5");
				pq.question6 = rs.getInt("question_6");
				pq.question7 = rs.getInt("question_7");
				pq.question8 = rs.getInt("question_8");
				pq.question9 = rs.getInt("question_9");
				pq.question10 = rs.getInt("question_10");
				pq.question11 = rs.getInt("question_11");
				pq.question12 = rs.getInt("question_12");
				pq.question13 = rs.getInt("question_13");
				pq.question14 = rs.getInt("question_14");
				pq.question15 = rs.getInt("question_15");
				pq.question16 = rs.getInt("question_16");
				pq.question17 = rs.getInt("question_17");
				pq.question18 = rs.getInt("question_18");
				pq.question19 = rs.getInt("question_19");
				pq.question20 = rs.getInt("question_20");
				
				pqs.add(pq);
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		
		return pqs;
}

 

我想问的是:在知道试卷中题目的数量(sum)后,能不能在查找时可以少写点代码。比如,现在我知道该试卷中有只有5道题(sum=5),那在查询时,有什么办法可以做到我只需要查询到5就行,后面的不用找了

//sum = 5时,只需要查询到5就行,后面的可以不用管了
				pq.question1 = rs.getInt("question_1");
				pq.question2 = rs.getInt("question_2");
				pq.question3 = rs.getInt("question_3");
				pq.question4 = rs.getInt("question_4");
				pq.question5 = rs.getInt("question_5");

还是说必需要把全部属性都写出来?

 

  • 写回答

3条回答 默认 最新

  • 一丝混乱 2020-11-06 17:52
    关注

    手一快打错了……现在怎么不让编辑了。

    for (int i = 1; i <= pq.sum; i++) {
        Field field = practiceQuestion.class.getField("question_" + i);
        field.set(pq, rs.getInt("question_" + i));
    }
    pqs.add(pq);

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘