@@ -100,7 +100,9 @@ public void changePassword(String password) throws SQLiteException {
100
100
if (!isOpen ()) {
101
101
throw new SQLiteException ("database not open" );
102
102
}
103
- native_rekey (password );
103
+ if (password != null ) {
104
+ native_rekey (password );
105
+ }
104
106
}
105
107
106
108
/**
@@ -119,7 +121,9 @@ public void changePassword(char[] password) throws SQLiteException {
119
121
if (!isOpen ()) {
120
122
throw new SQLiteException ("database not open" );
121
123
}
122
- native_rekey (String .valueOf (password ));
124
+ if (password != null ) {
125
+ native_rekey (String .valueOf (password ));
126
+ }
123
127
}
124
128
125
129
private static void loadICUData (Context context , File workingDir ) {
@@ -294,6 +298,11 @@ public static synchronized void loadLibs (Context context, File workingDir) {
294
298
*/
295
299
public static final int CREATE_IF_NECESSARY = 0x10000000 ; // update native code if changing
296
300
301
+ /**
302
+ * SQLite memory database name
303
+ */
304
+ public static final String MEMORY = ":memory:" ;
305
+
297
306
/**
298
307
* Indicates whether the most-recently started transaction has been marked as successful.
299
308
*/
@@ -959,7 +968,7 @@ public Cursor newCursor(SQLiteDatabase db,
959
968
* @throws IllegalArgumentException if the database path is null
960
969
*/
961
970
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 );
963
972
}
964
973
965
974
/**
@@ -981,7 +990,7 @@ public static SQLiteDatabase openDatabase(String path, String password, CursorFa
981
990
* @throws IllegalArgumentException if the database path is null
982
991
*/
983
992
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 );
985
994
}
986
995
987
996
/**
@@ -1005,7 +1014,7 @@ public static SQLiteDatabase openDatabase(String path, char[] password, CursorFa
1005
1014
* @throws IllegalArgumentException if the database path is null
1006
1015
*/
1007
1016
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 );
1009
1018
}
1010
1019
1011
1020
/**
@@ -1029,7 +1038,7 @@ public static SQLiteDatabase openDatabase(String path, String password, CursorFa
1029
1038
* @throws IllegalArgumentException if the database path is null
1030
1039
*/
1031
1040
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 );
1033
1042
}
1034
1043
1035
1044
/**
@@ -1056,7 +1065,7 @@ public static SQLiteDatabase openDatabase(String path, char[] password, CursorFa
1056
1065
*/
1057
1066
public static SQLiteDatabase openDatabase (String path , String password , CursorFactory factory , int flags ,
1058
1067
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 );
1060
1069
}
1061
1070
1062
1071
/**
@@ -1084,10 +1093,11 @@ public static SQLiteDatabase openDatabase(String path, String password, CursorFa
1084
1093
public static SQLiteDatabase openDatabase (String path , char [] password , CursorFactory factory , int flags ,
1085
1094
SQLiteDatabaseHook hook , DatabaseErrorHandler errorHandler ) {
1086
1095
SQLiteDatabase sqliteDatabase = null ;
1096
+ DatabaseErrorHandler myErrorHandler = (errorHandler != null ) ? errorHandler : new DefaultDatabaseErrorHandler ();
1087
1097
1088
1098
try {
1089
1099
// Open the database.
1090
- sqliteDatabase = new SQLiteDatabase (path , factory , flags , errorHandler );
1100
+ sqliteDatabase = new SQLiteDatabase (path , factory , flags , myErrorHandler );
1091
1101
sqliteDatabase .openDatabaseInternal (password , hook );
1092
1102
} catch (SQLiteDatabaseCorruptException e ) {
1093
1103
// Try to recover from this, if possible.
@@ -1097,10 +1107,10 @@ public static SQLiteDatabase openDatabase(String path, char[] password, CursorFa
1097
1107
// NOTE: if this errorHandler.onCorruption() throws the exception _should_
1098
1108
// bubble back to the original caller.
1099
1109
// DefaultDatabaseErrorHandler deletes the corrupt file, EXCEPT for memory database
1100
- errorHandler .onCorruption (sqliteDatabase );
1110
+ myErrorHandler .onCorruption (sqliteDatabase );
1101
1111
1102
1112
// try *once* again:
1103
- sqliteDatabase = new SQLiteDatabase (path , factory , flags , errorHandler );
1113
+ sqliteDatabase = new SQLiteDatabase (path , factory , flags , myErrorHandler );
1104
1114
sqliteDatabase .openDatabaseInternal (password , hook );
1105
1115
}
1106
1116
@@ -1122,7 +1132,7 @@ public static SQLiteDatabase openDatabase(String path, char[] password, CursorFa
1122
1132
* Equivalent to openDatabase(file.getPath(), password, factory, CREATE_IF_NECESSARY, databaseHook).
1123
1133
*/
1124
1134
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 );
1126
1136
}
1127
1137
1128
1138
/**
@@ -1137,12 +1147,12 @@ public static SQLiteDatabase openOrCreateDatabase(String path, String password,
1137
1147
*/
1138
1148
public static SQLiteDatabase openOrCreateDatabase (File file , String password , CursorFactory factory , SQLiteDatabaseHook databaseHook ,
1139
1149
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 );
1141
1151
}
1142
1152
1143
1153
public static SQLiteDatabase openOrCreateDatabase (String path , String password , CursorFactory factory , SQLiteDatabaseHook databaseHook ,
1144
1154
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 );
1146
1156
}
1147
1157
1148
1158
public static SQLiteDatabase openOrCreateDatabase (String path , char [] password , CursorFactory factory , SQLiteDatabaseHook databaseHook ) {
@@ -1158,14 +1168,14 @@ public static SQLiteDatabase openOrCreateDatabase(String path, char[] password,
1158
1168
* Equivalent to openDatabase(file.getPath(), password, factory, CREATE_IF_NECESSARY).
1159
1169
*/
1160
1170
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 );
1162
1172
}
1163
1173
1164
1174
/**
1165
1175
* Equivalent to openDatabase(path, password, factory, CREATE_IF_NECESSARY).
1166
1176
*/
1167
1177
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 );
1169
1179
}
1170
1180
1171
1181
/**
@@ -1192,7 +1202,7 @@ public static SQLiteDatabase openOrCreateDatabase(String path, char[] password,
1192
1202
*/
1193
1203
public static SQLiteDatabase create (CursorFactory factory , String password ) {
1194
1204
// 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 ? <
10000
/span>null : password .toCharArray (), factory , CREATE_IF_NECESSARY );
1196
1206
}
1197
1207
1198
1208
/**
@@ -1211,7 +1221,7 @@ public static SQLiteDatabase create(CursorFactory factory, String password) {
1211
1221
* @throws SQLiteException if the database cannot be opened
1212
1222
*/
1213
1223
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 );
1215
1225
}
1216
1226
1217
1227
@@ -2823,7 +2833,7 @@ private static ArrayList<Pair<String, String>> getAttachedDbs(SQLiteDatabase dbO
2823
2833
2824
2834
private native int native_status (int operation , boolean reset );
2825
2835
2826
- private native void native_key (char [] key ) throws SQLException ;
2836
+ private native void native_key (char [] key ) throws SQLException ;
2827
2837
2828
2838
private native void native_rekey (String key ) throws SQLException ;
2829
2839
}
0 commit comments