diff options
author | Vasu Nori <vnori@google.com> | 2010-07-22 13:57:13 -0700 |
---|---|---|
committer | Vasu Nori <vnori@google.com> | 2010-08-02 14:51:33 -0700 |
commit | ce38b98feb1e7c9c1799eb270c40798d833aa9ae (patch) | |
tree | 416f14f09c5ff44a35a2a90272bccf28672aafc2 /core/java/android/database/DatabaseUtils.java | |
parent | b0289f62af77a2811b4528fe284aad871e3c6b31 (diff) | |
download | frameworks_base-ce38b98feb1e7c9c1799eb270c40798d833aa9ae.zip frameworks_base-ce38b98feb1e7c9c1799eb270c40798d833aa9ae.tar.gz frameworks_base-ce38b98feb1e7c9c1799eb270c40798d833aa9ae.tar.bz2 |
do begin-end transaction before standalone insert/update/delete sql
also fix bug# 2871037
Change-Id: I13325f8eabff4f218d3206905010803b61d8e2cd
Diffstat (limited to 'core/java/android/database/DatabaseUtils.java')
-rw-r--r-- | core/java/android/database/DatabaseUtils.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/core/java/android/database/DatabaseUtils.java b/core/java/android/database/DatabaseUtils.java index 4063534..0687659 100644 --- a/core/java/android/database/DatabaseUtils.java +++ b/core/java/android/database/DatabaseUtils.java @@ -52,6 +52,21 @@ public class DatabaseUtils { private static final String[] countProjection = new String[]{"count(*)"}; + /** One of the values returned by {@link #getSqlStatementType(String)}. */ + public static final int STATEMENT_SELECT = 1; + /** One of the values returned by {@link #getSqlStatementType(String)}. */ + public static final int STATEMENT_UPDATE = 2; + /** One of the values returned by {@link #getSqlStatementType(String)}. */ + public static final int STATEMENT_ATTACH = 3; + /** One of the values returned by {@link #getSqlStatementType(String)}. */ + public static final int STATEMENT_BEGIN = 4; + /** One of the values returned by {@link #getSqlStatementType(String)}. */ + public static final int STATEMENT_COMMIT = 5; + /** One of the values returned by {@link #getSqlStatementType(String)}. */ + public static final int STATEMENT_ABORT = 6; + /** One of the values returned by {@link #getSqlStatementType(String)}. */ + public static final int STATEMENT_OTHER = 7; + /** * Special function for writing an exception result at the header of * a parcel, to be used when returning an exception from a transaction. @@ -1159,4 +1174,45 @@ public class DatabaseUtils { db.setVersion(dbVersion); db.close(); } + + /** + * Returns one of the following which represent the type of the given SQL statement. + * <ol> + * <li>{@link #STATEMENT_SELECT}</li> + * <li>{@link #STATEMENT_UPDATE}</li> + * <li>{@link #STATEMENT_ATTACH}</li> + * <li>{@link #STATEMENT_BEGIN}</li> + * <li>{@link #STATEMENT_COMMIT}</li> + * <li>{@link #STATEMENT_ABORT}</li> + * <li>{@link #STATEMENT_OTHER}</li> + * </ol> + * @param sql the SQL statement whose type is returned by this method + * @return one of the values listed above + */ + public static int getSqlStatementType(String sql) { + sql = sql.trim(); + if (sql.length() < 3) { + return STATEMENT_OTHER; + } + String prefixSql = sql.substring(0, 3).toUpperCase(); + if (prefixSql.equals("SEL")) { + return STATEMENT_SELECT; + } else if (prefixSql.equals("INS") || + prefixSql.equals("UPD") || + prefixSql.equals("REP") || + prefixSql.equals("DEL")) { + return STATEMENT_UPDATE; + } else if (prefixSql.equals("ATT")) { + return STATEMENT_ATTACH; + } else if (prefixSql.equals("COM")) { + return STATEMENT_COMMIT; + } else if (prefixSql.equals("END")) { + return STATEMENT_COMMIT; + } else if (prefixSql.equals("ROL")) { + return STATEMENT_ABORT; + } else if (prefixSql.equals("BEG")) { + return STATEMENT_BEGIN; + } + return STATEMENT_OTHER; + } } |