@@ -55,54 +55,14 @@ private FinalDb(DaoConfig config){
55
55
throw new DbException ("daoConfig is null" );
56
56
if (config .getContext () == null )
57
57
throw new DbException ("android context is null" );
58
- if (config .isSaveOnSDCard () ){
58
+ if (config .getTargetDirectory () != null && config . getTargetDirectory (). trim (). length () > 0 ){
59
59
this .db = createDbFileOnSDCard (config .getTargetDirectory (),config .getDbName ());
60
60
}else {
61
61
this .db = new SqliteDbHelper (config .getContext ().getApplicationContext (), config .getDbName (), config .getDbVersion (),config .getDbUpdateListener ()).getWritableDatabase ();
62
62
}
63
63
this .config = config ;
64
64
}
65
65
66
- /**
67
- * 在SD卡的指定目录上创建文件
68
- * @param sdcardPath
69
- * @param dbfilename
70
- * @return
71
- */
72
- private SQLiteDatabase createDbFileOnSDCard (String sdcardPath ,String dbfilename ){
73
- String dbPath =android .os .Environment .getExternalStorageDirectory ()
74
- .getAbsolutePath ()+(sdcardPath ==null ||sdcardPath .length ()==0 ?"" :"/" +sdcardPath );
75
- String [] dirs = sdcardPath .split ("/" );
76
- String pathCache =android .os .Environment .getExternalStorageDirectory ()
77
- .getAbsolutePath ();
78
- for (String dir :dirs ){
79
- if (dir .length ()==0 )
80
- continue ;
81
- File dbp =new File (pathCache +"/" +dir );
82
- if (!dbp .exists ()){
83
- dbp .mkdir ();
84
- pathCache = dbp .getAbsolutePath ();
85
- }
86
- }
87
- File dbf =new File (dbPath +"/" +dbfilename );
88
-
89
- //数据库文件是否创建成功
90
- boolean isFileCreateSuccess =false ;
91
- if (!dbf .exists ()){
92
- try {
93
- isFileCreateSuccess =dbf .createNewFile ();
94
- }
95
- catch (IOException ioex ){
96
- throw new DbException ("数据库文件创建失败" ,ioex );
97
- }
98
- }
99
- else {
100
- isFileCreateSuccess =true ;
101
- }
102
- if (isFileCreateSuccess )
103
- return SQLiteDatabase .openOrCreateDatabase (dbf , null );
104
- return null ;
105
- }
106
66
107
67
private synchronized static FinalDb getInstance (DaoConfig daoConfig ) {
108
68
FinalDb dao = daoMap .get (daoConfig .getDbName ());
@@ -112,29 +72,15 @@ private synchronized static FinalDb getInstance(DaoConfig daoConfig) {
112
72
}
113
73
return dao ;
114
74
}
115
- /**
116
- * 在sd卡上创建FinalDb
117
- * @param context
118
- * @param targetDirectory 目标目录
119
- */
120
- public static FinalDb createOnSDCard (Context context ,String targetDirectory ){
121
- DaoConfig config = new DaoConfig ();
122
- config .setContext (context );
123
- config .setSaveOnSDCard (true );
124
- config .setTargetDirectory (targetDirectory );
125
- return getInstance (config );
126
-
127
- }
75
+
128
76
/**
129
77
* 创建FinalDb
130
78
* @param context
131
79
*/
132
80
public static FinalDb create (Context context ){
133
81
DaoConfig config = new DaoConfig ();
134
82
config .setContext (context );
135
-
136
- return getInstance (config );
137
-
83
+ return create (config );
138
84
}
139
85
140
86
/**
@@ -146,7 +92,7 @@ public static FinalDb create(Context context,boolean isDebug){
146
92
DaoConfig config = new DaoConfig ();
147
93
config .setContext (context );
148
94
config .setDebug (isDebug );
149
- return getInstance (config );
95
+ return create (config );
150
96
151
97
}
152
98
@@ -159,8 +105,7 @@ public static FinalDb create(Context context,String dbName){
159
105
DaoConfig config = new DaoConfig ();
160
106
config .setContext (context );
161
107
config .setDbName (dbName );
162
-
163
- return getInstance (config );
108
+ return create (config );
164
109
}
165
110
166
111
/**
@@ -174,7 +119,36 @@ public static FinalDb create(Context context,String dbName,boolean isDebug){
174
119
config .setContext (context );
175
120
config .setDbName (dbName );
176
121
config .setDebug (isDebug );
177
- return getInstance (config );
122
+ return create (config );
123
+ }
124
+
125
+
126
+ /**
127
+ * 创建FinalDb
128
+ * @param context
129
+ * @param dbName 数据库名称
130
+ */
131
+ public static FinalDb create (Context context ,String targetDirectory ,String dbName ){
132
+ DaoConfig config = new DaoConfig ();
133
+ config .setContext (context );
134
+ config .setDbName (dbName );
135
+ config .setTargetDirectory (targetDirectory );
136
+ return create (config );
137
+ }
138
+
139
+ /**
140
+ * 创建 FinalDb
141
+ * @param context
142
+ * @param dbName 数据库名称
143
+ * @param isDebug 是否为debug模式(debug模式进行数据库操作的时候将会打印sql语句)
144
+ */
145
+ public static FinalDb create (Context context ,String targetDirectory ,String dbName ,boolean isDebug ){
146
+ DaoConfig config = new DaoConfig ();
147
+ config .setContext (context );
148
+ config .setTargetDirectory (targetDirectory );
149
+ config .setDbName (dbName );
150
+ config .setDebug (isDebug );
151
+ return create (config );
178
152
}
179
153
180
154
/**
@@ -193,9 +167,31 @@ public static FinalDb create(Context context,String dbName,boolean isDebug,int d
193
167
config .setDebug (isDebug );
194
168
config .setDbVersion (dbVersion );
195
169
config .setDbUpdateListener (dbUpdateListener );
196
- return getInstance (config );
170
+ return create (config );
197
171
}
198
172
173
+ /**
174
+ *
175
+ * @param context 上下文
176
+ * @param targetDirectory db文件路径,可以配置为sdcard的路径
177
+ * @param dbName 数据库名字
178
+ * @param isDebug 是否是调试模式:调试模式会log出sql信息
179
+ * @param dbVersion 数据库版本信息
180
+ * @param dbUpdateListener数据库升级监听器:如果监听器为null,升级的时候将会清空所所有的数据
181
+ * @return
182
+ */
183
+ public static FinalDb create (Context context ,String targetDirectory ,String dbName ,boolean isDebug ,int dbVersion ,DbUpdateListener dbUpdateListener ){
184
+ DaoConfig config = new DaoConfig ();
185
+ config .setContext (context );
186
+ config .setTargetDirectory (targetDirectory );
187
+ config .setDbName (dbName );
188
+ config .setDebug (isDebug );
189
+ config .setDbVersion (dbVersion );
190
+ config .setDbUpdateListener (dbUpdateListener );
191
+ return create (config );
192
+ }
193
+
194
+
199
195
/**
200
196
* 创建FinalDb
201
197
* @param daoConfig
@@ -305,6 +301,7 @@ public void deleteByWhere(Class<?> clazz , String strWhere ) {
305
301
debugSql (sql );
306
302
db .execSQL (sql );
307
303
}
304
+
308
305
/**
309
306
* 删除所有数据表
310
307
*/
@@ -679,7 +676,7 @@ public static class DaoConfig{
679
676
private int dbVersion = 1 ; //数据库版本
680
677
private boolean debug = true ; //是否是调试模式(调试模式 增删改查的时候显示SQL语句)
681
678
private DbUpdateListener dbUpdateListener ;
682
- private boolean saveOnSDCard = false ;//是否保存到SD卡
679
+ // private boolean saveOnSDCard = false;//是否保存到SD卡
683
680
private String targetDirectory ;//数据库文件在sd卡中的目录
684
681
685
682
public Context getContext () {
@@ -713,13 +710,13 @@ public void setDbUpdateListener(DbUpdateListener dbUpdateListener) {
713
710
this .dbUpdateListener = dbUpdateListener ;
714
711
}
715
712
716
- public boolean isSaveOnSDCard () {
717
- return saveOnSDCard ;
718
- }
719
-
720
- public void setSaveOnSDCard (boolean saveOnSDCard ) {
721
- this .saveOnSDCard = saveOnSDCard ;
722
- }
713
+ // public boolean isSaveOnSDCard() {
714
+ // return saveOnSDCard;
715
+ // }
716
+ //
717
+ // public void setSaveOnSDCard(boolean saveOnSDCard) {
718
+ // this.saveOnSDCard = saveOnSDCard;
719
+ // }
723
720
724
721
public String getTargetDirectory () {
725
722
return targetDirectory ;
@@ -730,6 +727,28 @@ public void setTargetDirectory(String targetDirectory) {
730
727
}
731
728
}
732
729
730
+ /**
731
+ * 在SD卡的指定目录上创建文件
732
+ * @param sdcardPath
733
+ * @param dbfilename
734
+ * @return
735
+ */
736
+ private SQLiteDatabase createDbFileOnSDCard (String sdcardPath ,String dbfilename ){
737
+ File dbf = new File (sdcardPath ,dbfilename );
738
+ if (!dbf .exists ()){
739
+ try {
740
+ if (dbf .createNewFile ()){
741
+ return SQLiteDatabase .openOrCreateDatabase (dbf , null );
742
+ }
743
+ }catch (IOException ioex ){
744
+ throw new DbException ("数据库文件创建失败" ,ioex );
745
+ }
746
+ }else {
747
+ return SQLiteDatabase .openOrCreateDatabase (dbf , null );
748
+ }
749
+
750
+ return null ;
751
+ }
733
752
734
753
class SqliteDbHelper extends SQLiteOpenHelper {
735
754
0 commit comments