2011-01-09 18 views
2

SQLiteQueryBuilderクラスで生成されたSQLをAndroidで簡単に見る方法があるのだろうか?私はこれをデバッグの目的で使用したいと思います。Android/SQLite用に生成されたSQL文を表示する方法

私は見回して検索しましたが、何も見つかりませんでした。それは簡単ではないか、それとも明らかに分かりやすいかです。

答えて

2

基本的には、SQLiteQueryBuilder#buildQueryStringという静的メソッドを呼び出すことで、正しいメソッドを呼び出すことができます。 Thisは方法がどのように見えるかです:

public static String buildQueryString(
     boolean distinct, String tables, String[] columns, String where, 
     String groupBy, String having, String orderBy, String limit) { 
    if (TextUtils.isEmpty(groupBy) && !TextUtils.isEmpty(having)) { 
     throw new IllegalArgumentException(
       "HAVING clauses are only permitted when using a groupBy clause"); 
    } 
    if (!TextUtils.isEmpty(limit) && !sLimitPattern.matcher(limit).matches()) { 
     throw new IllegalArgumentException("invalid LIMIT clauses:" + limit); 
    } 

    StringBuilder query = new StringBuilder(120); 

    query.append("SELECT "); 
    if (distinct) { 
     query.append("DISTINCT "); 
    } 
    if (columns != null && columns.length != 0) { 
     appendColumns(query, columns); 
    } else { 
     query.append("* "); 
    } 
    query.append("FROM "); 
    query.append(tables); 
    appendClause(query, " WHERE ", where); 
    appendClause(query, " GROUP BY ", groupBy); 
    appendClause(query, " HAVING ", having); 
    appendClause(query, " ORDER BY ", orderBy); 
    appendClause(query, " LIMIT ", limit); 

    return query.toString(); 
} 
+1

私は回避策だと思いますが、私のpurposes.Iあなたはデバッグ目的のSQLトレースを有効にすることができます別のJPA実装のような構成を期待していたために、それは十分に良いことです。 – Magnus

関連する問題