这可能更像是一种风格/标准/实践问题,但以下哪一种是更好的方法和原因:
public long insertSomething(MyAccount account, Employee employee, double rating) {
ContentValues values = new ContentValues();
values.put(ACCOUNT_ID, account.getId());
values.put(EMPLOYEE_ID, employee.getId());
values.put(RATING, rating);
return mDatabase.insert(MY_TABLE, null, values);
}
这基本上是接受对象,然后在方法中使用它们的ID来执行查询。
或者:
public long insertSomething(long accountId, long employeeID, double rating) {
ContentValues values = new ContentValues();
values.put(ACCOUNT_ID, accountId);
values.put(EMPLOYEE_ID, employeeID);
values.put(RATING, rating);
return mDatabase.insert(MY_TABLE, null, values);
}
有理由做其中一个吗?我不确定我应该采用哪种方法。
答案 0 :(得分:0)
这两种实现都同样有效,因此它可以直接用于您的使用。
有时效果取决于纯粹表现以外的其他因素,如可读性和一致性。关于一致性,如果SQLiteOpenHelper中的所有方法仅使用对象或仅使用单个值作为参数,则维护代码会更容易一些,因为从长远来看,您习惯了代码的一般结构。
答案 1 :(得分:0)
首先,您将代码放在错误的位置。当然,它在技术上会起作用,但从逻辑上讲,SQLOpenHelper
正如名称所示,用于不同的目的。因此,一旦您正确分离代码 - 它取决于目的以及您在应用程序中传递数据的方式。如果您主要使用ID,那么第二种方法更适合,如果您处理对象,那么第一种方法。如果混合,那么这可能是你最终会得到的结果:
public long insertSomething(long accountId, Employee employee, double rating) {
return insertSomething(accountId, employee.getId(), rating);
}
public long insertSomething(long accountId, long employeeID, double rating) {
ContentValues values = new ContentValues();
values.put(ACCOUNT_ID, accountId);
values.put(EMPLOYEE_ID, employeeID);
values.put(RATING, rating);
return mDatabase.insert(MY_TABLE, null, values);
}
但也许你开玩笑需要熟悉ORM,所以你很可能最终得到(构造函数也可以接受Employee对象,不是matternow):
new EmpoleeRating(accountId, employeeId, rating)
.save();