설탕 ORM을 사용하여 열을 합산하는 것이 가능한지 아는 사람 있습니까? 모든 설명서를 찾으려고 노력했지만 원시 쿼리 메서드가 있지만 원시 쿼리 메서드에는 반환 값이 없습니다.설탕 ORM SUM 열
예 : 'ATABLE에서 선택 합 (가격) "
Class.executeQuery()는 무효이다.
설탕 ORM은 이러한 종류의 기능 (JOIN 등과 함께)이 존재할 때까지는 사용하지 않는 것 같습니다.
설탕 ORM을 사용하여 열을 합산하는 것이 가능한지 아는 사람 있습니까? 모든 설명서를 찾으려고 노력했지만 원시 쿼리 메서드가 있지만 원시 쿼리 메서드에는 반환 값이 없습니다.설탕 ORM SUM 열
예 : 'ATABLE에서 선택 합 (가격) "
Class.executeQuery()는 무효이다.
설탕 ORM은 이러한 종류의 기능 (JOIN 등과 함께)이 존재할 때까지는 사용하지 않는 것 같습니다.
나는 마지막으로 다음과 같은 코드로 수행
long sumValue = -1L;
Database db = ((Application)SugarApp.getSugarContext()).obtainDatabase();
SQLiteDatabase sqLiteDatabase = db.getDB();
SQLiteStatement sqLiteStatement = sqLiteDatabase.compileStatement(
"SELECT SUM(column_name) FROM table_name");
try {
sumValue = sqLiteStatement.simpleQueryForLong();
} catch (Exception var16) {
var16.printStackTrace();
} finally {
sqLiteStatement.close();
}
는 또한 보호했다 접근 (제대로 매니페스트를 수정하는 것을 잊지 마세요) 때문에 데이터베이스의 속성에 액세스 할 수 있습니다하는 응용 프로그램 클래스를 변경해야합니다.
public class Application extends SugarApp {
public Database obtainDatabase(){
return getDatabase();
}
}
희망이 있습니다. 위해 database
에
int sumValue = -1;
Field f = null;
try {
f = SugarContext.getSugarContext().getClass().getDeclaredField("sugarDb");
f.setAccessible(true);
SugarDb db = (SugarDb) f.get(SugarContext.getSugarContext());
Cursor cursor = db.getDB().
rawQuery("Select Sum(COLUMN_NAME) as s from TABLE_NAME" , null);
if (cursor.moveToFirst())
sumValue = cursor.getInt(cursor.getColumnIndex("s"));
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
현재로서는 불가능합니다. 결국 greenDAO을 사용하여 끝내 었습니다. SQLiteDatabase 객체에 대한 액세스를 제공하는 훨씬 빠른 (리플렉션에 의존하지 않음) 솔루션으로 모든 종류의 사용자 정의 가능성을 가능하게했습니다.
당신은 반사에 의해 설탕 데이터베이스 개체에 액세스하여 원시 쿼리를 수행 할 수 있습니다 query
받는 사람은 꽤 똑바로 앞으로 다음
SugarDb sugarDb = new SugarDb(context);
: SUM
에 또는 쿼리를 사용하여 다음과 같은 코드로 Database
에 대한 액세스를 얻을 수 database
예를 들어, 당신은
SQLiteDatabase database = sugarDb.getDB();
SQLiteStatement query = database.compileStatement("SELECT SUM(AMOUNT) FROM EXPENSES_MODEL");
try {
total = query.simpleQueryForLong();
} catch (Exception e) {
e.printStackTrace();
} finally {
query.close();
}
통지 테이블 이름에 밑줄을 할 수 있습니까? Sugar ORM이 우리 테이블의 이름을 지정하는 방식이므로 테이블을 호출 할 때 조심하십시오. 열 이름은 대문자로 방법
통지? 그 이유는 설탕 ORM이 각 열을 대문자로 쓰기 때문입니다.
훌륭한 답변입니다! 이것은 받아 들여지는 것이어야합니다! 정말 고맙습니다! –
위대한 대답이지만 설탕이 완전히 지원하지 않는 사용자 지정 쿼리와 같은 시나리오에서 이런 종류의 스타일을 코딩하는 안드로이드 기본 db를 사용하는 것이 더 좋다고 생각합니다. D –
대답은 너무 늦을 수도 있지만 새로운 올 사람을 도움이 될 것입니다, 그 아주 쉽게 사용자 정의 query
queries
에 :
나는 정의도 쿼리 할 수 없습니다와 함께, 설탕에 SUM에 열을 유사한 문제에 직면하고있어! http://satyan.github.io/sugar/query.html? –
설탕 orm 짜증! 검색된 목록을 필터링하여이 총액 문제를 해결했습니다. http://stackoverflow.com/questions/25699131/sum-value-of-class-objects-property-in-arraylist –