【问题标题】:How might you improve upon the following method?您如何改进以下方法?
【发布时间】:2020-04-17 09:33:56
【问题描述】:

有人问我如何改进下面的代码。任何的意见都将会有帮助!我认为这应该是一个非常简单的问题,答案非常简单。

 public List getPlanets(DataSource d, String galaxy) throws SQLException
{
   Connection c;
   Statement s;
   ResultSet rs;
   Planet p;

   c = d.getConnection();
   s = c.createStatement();
   rs = s.executeQuery("select * from planets where galaxy = '" + galaxy + "'");

   List l = new ArrayList();

   while (rs.next())
   {
      p = new Planet();

      p.setName(rs.getString("name"));
      p.setDiameter(rs.getString("diameter"));
      p.setMass(rs.getString("mass"));
      l.add(p);
   }

   return l;
}

【问题讨论】:

  • 我认为您应该使用参数化查询而不是使用连接的普通 SQL。不使用参数化查询是不好的编程习惯。另外,不用逐个设置行星的每个属性,只需创建另一个构造函数并将 rs 对象传递给它,它可以相应地设置值。

标签: javascript html mysql


【解决方案1】:

如果您知道您只能从查询中获得 3 个特定项目 - 定位它们并且不要在查询中使用通配符 ("*")。请记住,这个符号的意思是“获得所有结果”

如果结果很小,通配符可能没问题 - 但想象一下,如果每行有 1000 个数据点 - 你会得到所有数据点,然后只使用 3 个。

rs = s.executeQuery("SELECT name, diameter, mass FROM planets WHERE galaxy = '" + galaxy + "'");

另外 - 我同意 @AhmerMH 关于参数化查询的观点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-01
    • 2017-07-10
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多