Skip to content

Commit d84de73

Browse files
committed
Update [ 完善错误提示 ]
1 parent 09958df commit d84de73

File tree

4 files changed

+44
-16
lines changed

4 files changed

+44
-16
lines changed

SJDBMap/Category/SJDatabaseMap+Server.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ extern char *_sjmystrcat(char *dst, const char *src);
2727
/*!
2828
* 自动创建相关的表
2929
*/
30-
- (void)sjAutoCreateOrAlterRelevanceTabWithClass:(Class)cls;
30+
- (BOOL)sjAutoCreateOrAlterRelevanceTabWithClass:(Class)cls;
3131

3232
/*!
3333
* 查询表中的所有字段

SJDBMap/Category/SJDatabaseMap+Server.m

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,13 @@ @implementation SJDatabaseMap (Server)
2929
* 执行SQL语句
3030
*/
3131
- (void)sjExeSQL:(const char *)sql completeBlock:(void(^)(BOOL r))block {
32-
BOOL r = (SQLITE_OK == sqlite3_exec(self.sqDB, sql, NULL, NULL, NULL));
32+
char *error = NULL;
33+
BOOL r = (SQLITE_OK == sqlite3_exec(self.sqDB, sql, NULL, NULL, &error));
3334
if ( block ) block(r);
35+
if ( error != NULL ) {
36+
NSLog(@"SJDatabaseMap Error ==> \n SQL : %s\n Error: %s", sql, error);
37+
sqlite3_free(error);
38+
}
3439
}
3540

3641
/*!
@@ -42,7 +47,7 @@ - (BOOL)sjCreateOrAlterTabWithClass:(Class)cls {
4247
* 如果表不存在创建表
4348
*/
4449
NSMutableSet<NSString *> *fieldsSet = [self _sjQueryTabAllFields_Set_WithClass:cls];
45-
if ( !fieldsSet ) {[self _sjCreateTab:cls]; return YES;}
50+
if ( !fieldsSet ) {return [self _sjCreateTab:cls];}
4651

4752
/*!
4853
* 如果表存在, 查看是否有更新字段
@@ -104,10 +109,15 @@ - (BOOL)sjCreateOrAlterTabWithClass:(Class)cls {
104109
/*!
105110
* 自动创建相关的表
106111
*/
107-
- (void)sjAutoCreateOrAlterRelevanceTabWithClass:(Class)cls {
112+
- (BOOL)sjAutoCreateOrAlterRelevanceTabWithClass:(Class)cls {
113+
__block BOOL result = YES;
108114
[[self sjGetRelevanceClasses:cls] enumerateObjectsUsingBlock:^(Class _Nonnull relevanceCls, BOOL * _Nonnull stop) {
109-
[self sjCreateOrAlterTabWithClass:relevanceCls];
115+
result = [self sjCreateOrAlterTabWithClass:relevanceCls];
116+
if ( result ) return;
117+
result = NO;
118+
*stop = YES;
110119
}];
120+
return result;
111121
}
112122

113123
/*!
@@ -770,26 +780,36 @@ - (BOOL)_sjCreateTab:(Class)cls {
770780
#endif
771781

772782
__weak typeof(self) _self = self;
783+
__block BOOL createResult = YES;
773784
[self sjExeSQL:sql completeBlock:^(BOOL result) {
774-
if ( !result ) NSLog(@"[%@] 创建表失败", cls);
785+
createResult = result;
786+
if ( !result ) {
787+
NSLog(@"[%@] 创建表失败", cls);
788+
return;
789+
}
775790
if ( !model.autoincrementPrimaryKey ) return;
776-
791+
777792
__strong typeof(_self) self = _self;
778793
if ( !self ) return;
779794
/*!
780795
* 如果是自增键。由于 0 在OC 中为空。 遇到自增主键值为0时,不好判断出是插入还是更新。为了避免这种情况,让ID从1开始。
781796
*/
782-
[self sjExeSQL:[NSString stringWithFormat:@"dbcc checkident('%s', reseed, 0)", tabName].UTF8String completeBlock:nil];
797+
[self sjExeSQL:[NSString stringWithFormat:@"dbcc checkident('%s', reseed, 0)", tabName].UTF8String completeBlock:^(BOOL r) {
798+
createResult = result;
799+
if ( !result ) {
800+
NSLog(@"[%@] 自增键设置失败", cls);
801+
return;
802+
}
803+
}];
783804
}];
784805

785-
786806
free(sql);
787807
free(ivarList);
788808

789809
sql = NULL;
790810
ivarList = NULL;
791811

792-
return YES;
812+
return createResult;
793813
}
794814

795815
/*!

SJDBMap/SJDatabaseMap.m

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,18 +140,26 @@ - (void)insertOrUpdateDataWithModels:(NSArray<id<SJDBMapUseProtocol>> *)models c
140140
* 归类整理
141141
*/
142142
NSDictionary<NSString *, NSArray<id> *> *modelsDict = [self sjPutInOrderModels:models];
143+
__block BOOL result = YES;
143144

144145
/*!
145146
* 自动创建表
146147
*/
147148
[modelsDict.allKeys enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
148-
[self sjAutoCreateOrAlterRelevanceTabWithClass:NSClassFromString(obj)];
149+
result = [self sjAutoCreateOrAlterRelevanceTabWithClass:NSClassFromString(obj)];
150+
if ( result ) return;
151+
result = NO;
152+
*stop = YES;
149153
}];
150154

155+
if ( !result ) {
156+
if ( block ) block(result);
157+
return ;
158+
}
159+
151160
/*!
152161
* 批量插入或更新
153162
*/
154-
__block BOOL result = YES;
155163
[modelsDict enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull tabName, NSArray<id> * _Nonnull modelsArr, BOOL * _Nonnull stop) {
156164
result = [self sjInsertOrUpdateDataWithModels:modelsArr enableTransaction:YES];
157165
if ( !result ) *stop = YES;

SJDBMapProject/ViewController.m

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,7 @@ - (void)viewDidLoad {
6666
NSLog(@"\n%@", NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject);
6767

6868

69-
#warning - Please perform " pod update --no-repo-update " to update the project
70-
69+
#warning - if it can't run. please perform " pod update --no-repo-update " to update the project. The update may be a bit slow.
7170

7271
// sample 1
7372
[self insertOrUpdate];
@@ -115,7 +114,7 @@ - (void)insertOrUpdate {
115114
[PersonTag tagWithID:4 des:@"E"],];
116115

117116
NSMutableArray <Person *> *arrM = [NSMutableArray new];
118-
for ( int i = 0 ; i < 4000 ; i ++ ) {
117+
for ( int i = 0 ; i < 3 ; i ++ ) {
119118
Person *sj = [Person new];
120119
sj.personID = i;
121120
sj.name = @"sj";
@@ -126,8 +125,9 @@ - (void)insertOrUpdate {
126125

127126
sj.goods = goods;
128127
[arrM addObject:sj];
129-
}
130128

129+
}
130+
131131

132132
// insert or update sample
133133
[[SJDatabaseMap sharedServer] insertOrUpdateDataWithModels:arrM callBlock:^(BOOL r) {

0 commit comments

Comments
 (0)