@@ -119,7 +119,7 @@ public void changePassword(char[] password) throws SQLiteException {
119119 if (!isOpen ()) {
120120 throw new SQLiteException ("database not open" );
121121 }
122- native_rekey (String .valueOf (password ));
122+ native_rekey (password == null ? null : String .valueOf (password ));
123123 }
124124
125125 private static void loadICUData (Context context , File workingDir ) {
@@ -294,6 +294,11 @@ public static synchronized void loadLibs (Context context, File workingDir) {
294294 */
295295 public static final int CREATE_IF_NECESSARY = 0x10000000 ; // update native code if changing
296296
297+ /**
298+ * SQLite memory database name
299+ */
300+ public static final String MEMORY = ":memory:" ;
301+
297302 /**
298303 * Indicates whether the most-recently started transaction has been marked as successful.
299304 */
@@ -959,7 +964,7 @@ public Cursor newCursor(SQLiteDatabase db,
959964 * @throws IllegalArgumentException if the database path is null
960965 */
961966 public static SQLiteDatabase openDatabase (String path , String password , CursorFactory factory , int flags ) {
962- return openDatabase (path , password . toCharArray () , factory , flags , null );
967+ return openDatabase (path , password , factory , flags , null );
963968 }
964969
965970 /**
@@ -981,7 +986,7 @@ public static SQLiteDatabase openDatabase(String path, String password, CursorFa
981986 * @throws IllegalArgumentException if the database path is null
982987 */
983988 public static SQLiteDatabase openDatabase (String path , char [] password , CursorFactory factory , int flags ) {
984- return openDatabase (path , password , factory , flags , null );
989+ return openDatabase (path , password , factory , flags , null , null );
985990 }
986991
987992 /**
@@ -1005,7 +1010,7 @@ public static SQLiteDatabase openDatabase(String path, char[] password, CursorFa
10051010 * @throws IllegalArgumentException if the database path is null
10061011 */
10071012 public static SQLiteDatabase openDatabase (String path , String password , CursorFactory factory , int flags , SQLiteDatabaseHook hook ) {
1008- return openDatabase (path , password . toCharArray () , factory , flags , hook );
1013+ return openDatabase (path , password , factory , flags , hook , null );
10091014 }
10101015
10111016 /**
@@ -1029,7 +1034,7 @@ public static SQLiteDatabase openDatabase(String path, String password, CursorFa
10291034 * @throws IllegalArgumentException if the database path is null
10301035 */
10311036 public static SQLiteDatabase openDatabase (String path , char [] password , CursorFactory factory , int flags , SQLiteDatabaseHook hook ) {
1032- return openDatabase (path , password , factory , flags , hook , new DefaultDatabaseErrorHandler () );
1037+ return openDatabase (path , password , factory , flags , hook , null );
10331038 }
10341039
10351040 /**
@@ -1056,7 +1061,7 @@ public static SQLiteDatabase openDatabase(String path, char[] password, CursorFa
10561061 */
10571062 public static SQLiteDatabase openDatabase (String path , String password , CursorFactory factory , int flags ,
10581063 SQLiteDatabaseHook hook , DatabaseErrorHandler errorHandler ) {
1059- return openDatabase (path , password .toCharArray (), factory , flags , hook , errorHandler );
1064+ return openDatabase (path , password == null ? null : password .toCharArray (), factory , flags , hook , errorHandler );
10601065 }
10611066
10621067 /**
@@ -1084,10 +1089,11 @@ public static SQLiteDatabase openDatabase(String path, String password, CursorFa
10841089 public static SQLiteDatabase openDatabase (String path , char [] password , CursorFactory factory , int flags ,
10851090 SQLiteDatabaseHook hook , DatabaseErrorHandler errorHandler ) {
10861091 SQLiteDatabase sqliteDatabase = null ;
1092+ DatabaseErrorHandler myErrorHandler = (errorHandler != null ) ? errorHandler : new DefaultDatabaseErrorHandler ();
10871093
10881094 try {
10891095 // Open the database.
1090- sqliteDatabase = new SQLiteDatabase (path , factory , flags , errorHandler );
1096+ sqliteDatabase = new SQLiteDatabase (path , factory , flags , myErrorHandler );
10911097 sqliteDatabase .openDatabaseInternal (password , hook );
10921098 } catch (SQLiteDatabaseCorruptException e ) {
10931099 // Try to recover from this, if possible.
@@ -1097,10 +1103,10 @@ public static SQLiteDatabase openDatabase(String path, char[] password, CursorFa
10971103 // NOTE: if this errorHandler.onCorruption() throws the exception _should_
10981104 // bubble back to the original caller.
10991105 // DefaultDatabaseErrorHandler deletes the corrupt file, EXCEPT for memory database
1100- errorHandler .onCorruption (sqliteDatabase );
1106+ myErrorHandler .onCorruption (sqliteDatabase );
11011107
11021108 // try *once* again:
1103- sqliteDatabase = new SQLiteDatabase (path , factory , flags , errorHandler );
1109+ sqliteDatabase = new SQLiteDatabase (path , factory , flags , myErrorHandler );
11041110 sqliteDatabase .openDatabaseInternal (password , hook );
11051111 }
11061112
@@ -1122,7 +1128,7 @@ public static SQLiteDatabase openDatabase(String path, char[] password, CursorFa
11221128 * Equivalent to openDatabase(file.getPath(), password, factory, CREATE_IF_NECESSARY, databaseHook).
11231129 */
11241130 public static SQLiteDatabase openOrCreateDatabase (File file , String password , CursorFactory factory , SQLiteDatabaseHook databaseHook ) {
1125- return openOrCreateDatabase (file . getPath () , password , factory , databaseHook );
1131+ return openOrCreateDatabase (file , password , factory , databaseHook , null );
11261132 }
11271133
11281134 /**
@@ -1137,12 +1143,12 @@ public static SQLiteDatabase openOrCreateDatabase(String path, String password,
11371143 */
11381144 public static SQLiteDatabase openOrCreateDatabase (File file , String password , CursorFactory factory , SQLiteDatabaseHook databaseHook ,
11391145 DatabaseErrorHandler errorHandler ) {
1140- return openDatabase (file .getPath (), password . toCharArray () , factory , CREATE_IF_NECESSARY , databaseHook , errorHandler );
1146+ return openOrCreateDatabase (file == null ? null : file .getPath (), password , factory , databaseHook , errorHandler );
11411147 }
11421148
11431149 public static SQLiteDatabase openOrCreateDatabase (String path , String password , CursorFactory factory , SQLiteDatabaseHook databaseHook ,
11441150 DatabaseErrorHandler errorHandler ) {
1145- return openDatabase (path , password .toCharArray (), factory , CREATE_IF_NECESSARY , databaseHook , errorHandler );
1151+ return openDatabase (path , password == null ? null : password .toCharArray (), factory , CREATE_IF_NECESSARY , databaseHook , errorHandler );
11461152 }
11471153
11481154 public static SQLiteDatabase openOrCreateDatabase (String path , char [] password , CursorFactory factory , SQLiteDatabaseHook databaseHook ) {
@@ -1158,14 +1164,14 @@ public static SQLiteDatabase openOrCreateDatabase(String path, char[] password,
11581164 * Equivalent to openDatabase(file.getPath(), password, factory, CREATE_IF_NECESSARY).
11591165 */
11601166 public static SQLiteDatabase openOrCreateDatabase (File file , String password , CursorFactory factory ) {
1161- return openOrCreateDatabase (file . getPath () , password , factory , null );
1167+ return openOrCreateDatabase (file , password , factory , null );
11621168 }
11631169
11641170 /**
11651171 * Equivalent to openDatabase(path, password, factory, CREATE_IF_NECESSARY).
11661172 */
11671173 public static SQLiteDatabase openOrCreateDatabase (String path , String password , CursorFactory factory ) {
1168- return openDatabase (path , password . toCharArray () , factory , CREATE_IF_NECESSARY , null );
1174+ return openDatabase (path , password , factory , CREATE_IF_NECESSARY , null );
11691175 }
11701176
11711177 /**
@@ -1192,7 +1198,7 @@ public static SQLiteDatabase openOrCreateDatabase(String path, char[] password,
11921198 */
11931199 public static SQLiteDatabase create (CursorFactory factory , String password ) {
11941200 // This is a magic string with special meaning for SQLite.
1195- return openDatabase (":memory:" , password .toCharArray (), factory , CREATE_IF_NECESSARY );
1201+ return openDatabase (MEMORY , password == null ? null : password .toCharArray (), factory , CREATE_IF_NECESSARY );
11961202 }
11971203
11981204 /**
@@ -1211,7 +1217,7 @@ public static SQLiteDatabase create(CursorFactory factory, String password) {
12111217 * @throws SQLiteException if the database cannot be opened
12121218 */
12131219 public static SQLiteDatabase create (CursorFactory factory , char [] password ) {
1214- return openDatabase (":memory:" , password , factory , CREATE_IF_NECESSARY );
1220+ return openDatabase (MEMORY , password , factory , CREATE_IF_NECESSARY );
12151221 }
12161222
12171223
0 commit comments