@@ -100,7 +100,9 @@ public void changePassword(String password) throws SQLiteException {
100100 if (!isOpen ()) {
101101 throw new SQLiteException ("database not open" );
102102 }
103- native_rekey (password );
103+ if (password != null ) {
104+ native_rekey (password );
105+ }
104106 }
105107
106108 /**
@@ -119,7 +121,9 @@ public void changePassword(char[] password) throws SQLiteException {
119121 if (!isOpen ()) {
120122 throw new SQLiteException ("database not open" );
121123 }
122- native_rekey (String .valueOf (password ));
124+ if (password != null ) {
125+ native_rekey (String .valueOf (password ));
126+ }
123127 }
124128
125129 private static void loadICUData (Context context , File workingDir ) {
@@ -294,6 +298,11 @@ public static synchronized void loadLibs (Context context, File workingDir) {
294298 */
295299 public static final int CREATE_IF_NECESSARY = 0x10000000 ; // update native code if changing
296300
301+ /**
302+ * SQLite memory database name
303+ */
304+ public static final String MEMORY = ":memory:" ;
305+
297306 /**
298307 * Indicates whether the most-recently started transaction has been marked as successful.
299308 */
@@ -959,7 +968,7 @@ public Cursor newCursor(SQLiteDatabase db,
959968 * @throws IllegalArgumentException if the database path is null
960969 */
961970 public static SQLiteDatabase openDatabase (String path , String password , CursorFactory factory , int flags ) {
962- return openDatabase (path , password . toCharArray () , factory , flags , null );
971+ return openDatabase (path , password , factory , flags , null );
963972 }
964973
965974 /**
@@ -981,7 +990,7 @@ public static SQLiteDatabase openDatabase(String path, String password, CursorFa
981990 * @throws IllegalArgumentException if the database path is null
982991 */
983992 public static SQLiteDatabase openDatabase (String path , char [] password , CursorFactory factory , int flags ) {
984- return openDatabase (path , password , factory , flags , null );
993+ return openDatabase (path , password , factory , flags , null , null );
985994 }
986995
987996 /**
@@ -1005,7 +1014,7 @@ public static SQLiteDatabase openDatabase(String path, char[] password, CursorFa
10051014 * @throws IllegalArgumentException if the database path is null
10061015 */
10071016 public static SQLiteDatabase openDatabase (String path , String password , CursorFactory factory , int flags , SQLiteDatabaseHook hook ) {
1008- return openDatabase (path , password . toCharArray () , factory , flags , hook );
1017+ return openDatabase (path , password , factory , flags , hook , null );
10091018 }
10101019
10111020 /**
@@ -1029,7 +1038,7 @@ public static SQLiteDatabase openDatabase(String path, String password, CursorFa
10291038 * @throws IllegalArgumentException if the database path is null
10301039 */
10311040 public static SQLiteDatabase openDatabase (String path , char [] password , CursorFactory factory , int flags , SQLiteDatabaseHook hook ) {
1032- return openDatabase (path , password , factory , flags , hook , new DefaultDatabaseErrorHandler () );
1041+ return openDatabase (path , password , factory , flags , hook , null );
10331042 }
10341043
10351044 /**
@@ -1056,7 +1065,7 @@ public static SQLiteDatabase openDatabase(String path, char[] password, CursorFa
10561065 */
10571066 public static SQLiteDatabase openDatabase (String path , String password , CursorFactory factory , int flags ,
10581067 SQLiteDatabaseHook hook , DatabaseErrorHandler errorHandler ) {
1059- return openDatabase (path , password .toCharArray (), factory , flags , hook , errorHandler );
1068+ return openDatabase (path , password == null ? null : password .toCharArray (), factory , flags , hook , errorHandler );
10601069 }
10611070
10621071 /**
@@ -1084,10 +1093,11 @@ public static SQLiteDatabase openDatabase(String path, String password, CursorFa
10841093 public static SQLiteDatabase openDatabase (String path , char [] password , CursorFactory factory , int flags ,
10851094 SQLiteDatabaseHook hook , DatabaseErrorHandler errorHandler ) {
10861095 SQLiteDatabase sqliteDatabase = null ;
1096+ DatabaseErrorHandler myErrorHandler = (errorHandler != null ) ? errorHandler : new DefaultDatabaseErrorHandler ();
10871097
10881098 try {
10891099 // Open the database.
1090- sqliteDatabase = new SQLiteDatabase (path , factory , flags , errorHandler );
1100+ sqliteDatabase = new SQLiteDatabase (path , factory , flags , myErrorHandler );
10911101 sqliteDatabase .openDatabaseInternal (password , hook );
10921102 } catch (SQLiteDatabaseCorruptException e ) {
10931103 // Try to recover from this, if possible.
@@ -1097,10 +1107,10 @@ public static SQLiteDatabase openDatabase(String path, char[] password, CursorFa
10971107 // NOTE: if this errorHandler.onCorruption() throws the exception _should_
10981108 // bubble back to the original caller.
10991109 // DefaultDatabaseErrorHandler deletes the corrupt file, EXCEPT for memory database
1100- errorHandler .onCorruption (sqliteDatabase );
1110+ myErrorHandler .onCorruption (sqliteDatabase );
11011111
11021112 // try *once* again:
1103- sqliteDatabase = new SQLiteDatabase (path , factory , flags , errorHandler );
1113+ sqliteDatabase = new SQLiteDatabase (path , factory , flags , myErrorHandler );
11041114 sqliteDatabase .openDatabaseInternal (password , hook );
11051115 }
11061116
@@ -1122,7 +1132,7 @@ public static SQLiteDatabase openDatabase(String path, char[] password, CursorFa
11221132 * Equivalent to openDatabase(file.getPath(), password, factory, CREATE_IF_NECESSARY, databaseHook).
11231133 */
11241134 public static SQLiteDatabase openOrCreateDatabase (File file , String password , CursorFactory factory , SQLiteDatabaseHook databaseHook ) {
1125- return openOrCreateDatabase (file . getPath () , password , factory , databaseHook );
1135+ return openOrCreateDatabase (file , password , factory , databaseHook , null );
11261136 }
11271137
11281138 /**
@@ -1137,12 +1147,12 @@ public static SQLiteDatabase openOrCreateDatabase(String path, String password,
11371147 */
11381148 public static SQLiteDatabase openOrCreateDatabase (File file , String password , CursorFactory factory , SQLiteDatabaseHook databaseHook ,
11391149 DatabaseErrorHandler errorHandler ) {
1140- return openDatabase (file .getPath (), password . toCharArray () , factory , CREATE_IF_NECESSARY , databaseHook , errorHandler );
1150+ return openOrCreateDatabase (file == null ? null : file .getPath (), password , factory , databaseHook , errorHandler );
11411151 }
11421152
11431153 public static SQLiteDatabase openOrCreateDatabase (String path , String password , CursorFactory factory , SQLiteDatabaseHook databaseHook ,
11441154 DatabaseErrorHandler errorHandler ) {
1145- return openDatabase (path , password .toCharArray (), factory , CREATE_IF_NECESSARY , databaseHook , errorHandler );
1155+ return openDatabase (path , password == null ? null : password .toCharArray (), factory , CREATE_IF_NECESSARY , databaseHook , errorHandler );
11461156 }
11471157
11481158 public static SQLiteDatabase openOrCreateDatabase (String path , char [] password , CursorFactory factory , SQLiteDatabaseHook databaseHook ) {
@@ -1158,14 +1168,14 @@ public static SQLiteDatabase openOrCreateDatabase(String path, char[] password,
11581168 * Equivalent to openDatabase(file.getPath(), password, factory, CREATE_IF_NECESSARY).
11591169 */
11601170 public static SQLiteDatabase openOrCreateDatabase (File file , String password , CursorFactory factory ) {
1161- return openOrCreateDatabase (file . getPath () , password , factory , null );
1171+ return openOrCreateDatabase (file , password , factory , null );
11621172 }
11631173
11641174 /**
11651175 * Equivalent to openDatabase(path, password, factory, CREATE_IF_NECESSARY).
11661176 */
11671177 public static SQLiteDatabase openOrCreateDatabase (String path , String password , CursorFactory factory ) {
1168- return openDatabase (path , password . toCharArray () , factory , CREATE_IF_NECESSARY , null );
1178+ return openDatabase (path , password , factory , CREATE_IF_NECESSARY , null );
11691179 }
11701180
11711181 /**
@@ -1192,7 +1202,7 @@ public static SQLiteDatabase openOrCreateDatabase(String path, char[] password,
11921202 */
11931203 public static SQLiteDatabase create (CursorFactory factory , String password ) {
11941204 // This is a magic string with special meaning for SQLite.
1195- return openDatabase (":memory:" , password .toCharArray (), factory , CREATE_IF_NECESSARY );
1205+ return openDatabase (MEMORY , password == null ? null : password .toCharArray (), factory , CREATE_IF_NECESSARY );
11961206 }
11971207
11981208 /**
@@ -1211,7 +1221,7 @@ public static SQLiteDatabase create(CursorFactory factory, String password) {
12111221 * @throws SQLiteException if the database cannot be opened
12121222 */
12131223 public static SQLiteDatabase create (CursorFactory factory , char [] password ) {
1214- return openDatabase (":memory:" , password , factory , CREATE_IF_NECESSARY );
1224+ return openDatabase (MEMORY , password , factory , CREATE_IF_NECESSARY );
12151225 }
12161226
12171227
@@ -2823,7 +2833,7 @@ private static ArrayList<Pair<String, String>> getAttachedDbs(SQLiteDatabase dbO
28232833
28242834 private native int native_status (int operation , boolean reset );
28252835
2826- private native void native_key (char [] key ) throws SQLException ;
2836+ private native void native_key (char [] key ) throws SQLException ;
28272837
28282838 private native void native_rekey (String key ) throws SQLException ;
28292839}
0 commit comments