Skip to content

Commit

Permalink
<fix>(<loation>): <修复Exception异常报告>
Browse files Browse the repository at this point in the history
<1.修复Exception异常报告
  2.修复update操作中‘ ’和“ ”不存在的错误处理情况
  3.添加创建表返回表名称字段tableName>
  • Loading branch information
CreaterOS committed Jul 15, 2021
1 parent 2dadc79 commit a6a70fd
Show file tree
Hide file tree
Showing 15 changed files with 147 additions and 48 deletions.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
<key>Paintinglite.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
<integer>0</integer>
</dict>
<key>PaintingliteAggregate.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
<integer>1</integer>
</dict>
</dict>
</dict>
Expand Down
19 changes: 14 additions & 5 deletions Paintinglite/Paintinglite/Base.lproj/Main.storyboard
Original file line number Diff line number Diff line change
@@ -1,24 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="18122" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="18093"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="" sceneMemberID="viewController">
<viewController id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
<color key="backgroundColor" systemColor="tertiarySystemFillColor"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="137.68115942028987" y="93.75"/>
</scene>
</scenes>
<resources>
<systemColor name="tertiarySystemFillColor">
<color red="0.46274509803921571" green="0.46274509803921571" blue="0.50196078431372548" alpha="0.12" colorSpace="custom" customColorSpace="sRGB"/>
</systemColor>
</resources>
</document>
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,31 @@ NS_ASSUME_NONNULL_BEGIN
@interface PaintingliteException : NSException

/*!
@method PaintingliteException: reason:
@method paintingliteException: reason:
@abstract 异常处理报错
@discussion 异常处理报错
@param exceptionWithName 异常名称
@param reason 异常原因
*/
+ (void)PaintingliteException:(NSString *)exceptionWithName reason:(NSString *)reason;
+ (void)paintingliteException:(NSString *)exceptionWithName reason:(NSString *)reason;


/*!
@method paintingliteDictException:
@abstract 异常处理报错
@discussion 异常处理报错
@param info 异常字典
*/
+ (void)paintingliteDictException:(NSDictionary *)info;

/*!
@method PaintingliteXMLException: reason:
@method paintingliteXMLException: reason:
@abstract 解析XML异常处理报错
@discussion 解析XML报错异常处理报错
@param exceptionWithName 异常名称
@param reason 异常原因
*/
+ (void)PaintingliteXMLException:(NSString *)exceptionWithName reason:(NSString *)reason;
+ (void)paintingliteXMLException:(NSString *)exceptionWithName reason:(NSString *)reason;

@end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,16 @@
@implementation PaintingliteException

#pragma mark - 抛出异常
+ (void)PaintingliteException:(NSString *)exceptionWithName reason:(NSString *)reason{
NSLog(@"exceptionWithName: %@ reason: %@",exceptionWithName,reason);
+ (void)paintingliteException:(NSString *)exceptionWithName reason:(NSString *)reason{
NSLog(@"Exception: %@ Reason: %@",exceptionWithName,reason);
}

+ (void)PaintingliteXMLException:(NSString *)exceptionWithName reason:(NSString *)reason{
NSLog(@"exceptionWithName: %@ reason: %@",exceptionWithName,reason);
+ (void)paintingliteDictException:(NSDictionary *)info{
NSLog(@"%@",info);
}

+ (void)paintingliteXMLException:(NSString *)exceptionWithName reason:(NSString *)reason{
NSLog(@"Exception: %@ Reason: %@",exceptionWithName,reason);
}

@end
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ - (NSString *__nonnull)aggregateSQL:(PaintingliteAggregateType)type field:(NSStr
//判断表是否存在
if (![[self.exec getCurrentTableNameWithCache] containsObject:[tableName lowercaseString]]) {
//抛出异常
[PaintingliteException PaintingliteException:@"表名不存在" reason:@"数据库中找不到表名,无法查询"];
[PaintingliteException paintingliteException:@"表名不存在" reason:@"数据库中找不到表名,无法查询"];
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ - (Boolean)baseCUD:(sqlite3 *)ppDb sql:(NSString *)sql CUDHandler:(NSString * (^

//判断表是否存在,判断表的字段
if (![[self.exec getCurrentTableNameWithCache] containsObject:tableName]){
[PaintingliteException PaintingliteException:@"表名不存在" reason:@"数据库找不到表名,无法执行操作"];
[PaintingliteException paintingliteException:@"表名不存在" reason:@"数据库找不到表名,无法执行操作"];
}

//执行语句
Expand Down Expand Up @@ -207,7 +207,26 @@ - (Boolean)update:(sqlite3 *)ppDb obj:(id)obj condition:(NSString * _Nonnull)con

sql = ([sql componentsSeparatedByString:@","][1].length == 0) ? [sql substringWithRange:NSMakeRange(0, sql.length-1)] : sql;

sql = [sql stringByAppendingString:[NSString stringWithFormat:@" WHERE %@",[condition containsString:@"WHERE"] ? [[condition componentsSeparatedByString:@"WHERE "] lastObject] : condition]];
/// condition 是否包含‘’或者“”
NSString *resCondition;
if (![condition containsString:@"'"] || ![condition containsString:@"\""]) {
NSArray<NSString *> *conditions = [condition componentsSeparatedByString:@"="];
if (conditions.count == 0) {
return success;
}
NSString *newSubContent = [conditions lastObject];
NSString *resSubContent;
if ([newSubContent characterAtIndex:0] == ' ') {
resSubContent = [[@"'" stringByAppendingString:[newSubContent substringFromIndex:1]] stringByAppendingString:@"'"];

} else {
resSubContent = [[@"'" stringByAppendingString:newSubContent] stringByAppendingString:@"'"];
}

resCondition = [[conditions.firstObject stringByAppendingString:@"="] stringByAppendingString:resSubContent];
}

sql = [sql stringByAppendingString:[NSString stringWithFormat:@" WHERE %@",[resCondition containsString:@"WHERE"] ? [[resCondition componentsSeparatedByString:@"WHERE "] lastObject] : resCondition]];

//增加数据
success = [self.exec sqlite3Exec:ppDb sql:sql];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ - (Boolean)load:(sqlite3 *)ppDb completeHandler:(void (^)(PaintingliteSessionErr
while ((obj = va_arg(arg_list, NSObject *))) {
if ([self.objs isEqual:obj]) {
//报出异常
[PaintingliteException PaintingliteException:@"重复对象" reason:@"传入对象重复"];
[PaintingliteException paintingliteException:@"重复对象" reason:@"传入对象重复"];
}

//获得每一个id对象
Expand Down Expand Up @@ -108,7 +108,7 @@ - (Boolean)limit:(sqlite3 *)ppDb start:(NSUInteger)start end:(NSUInteger)end com
while ((obj = va_arg(arg_list, NSObject *))) {
if ([self.objs isEqual:obj]) {
//报出异常
[PaintingliteException PaintingliteException:@"重复对象" reason:@"传入对象重复"];
[PaintingliteException paintingliteException:@"重复对象" reason:@"传入对象重复"];
}


Expand Down Expand Up @@ -155,7 +155,7 @@ - (Boolean)limit:(sqlite3 *)ppDb startAndEnd:(NSArray<NSArray<NSNumber *> *> *)s
while ((obj = va_arg(arg_list, NSObject *))) {
if ([self.objs isEqual:obj]) {
//报出异常
[PaintingliteException PaintingliteException:@"重复对象" reason:@"传入对象重复"];
[PaintingliteException paintingliteException:@"重复对象" reason:@"传入对象重复"];
}


Expand Down Expand Up @@ -254,7 +254,7 @@ - (Boolean)orderBy:(sqlite3 *)ppDb orderStyleArray:(NSArray<NSString *> *)orderS
while ((obj = va_arg(arg_list, NSObject *))) {
if ([self.objs isEqual:obj]) {
//报出异常
[PaintingliteException PaintingliteException:@"重复对象" reason:@"传入对象重复"];
[PaintingliteException paintingliteException:@"重复对象" reason:@"传入对象重复"];
}

//获得每一个id对象
Expand Down Expand Up @@ -302,7 +302,7 @@ - (Boolean)query:(sqlite3 *)ppDb sql:(NSArray<NSString *> *)sql completeHandler:
while ((obj = va_arg(arg_list, NSObject *))) {
if ([self.objs isEqual:obj]) {
//报出异常
[PaintingliteException PaintingliteException:@"重复对象" reason:@"传入对象重复"];
[PaintingliteException paintingliteException:@"重复对象" reason:@"传入对象重复"];
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ NS_ASSUME_NONNULL_BEGIN
@param completeHandler 回调操作
@result Boolean
*/
- (Boolean)createTableForObj:(sqlite3 *)ppDb obj:(id)obj createStyle:(PaintingliteDataBaseOptionsPrimaryKeyStyle)createStyle completeHandler:(void(^ __nullable)(PaintingliteSessionError *error,Boolean success))completeHandler;
- (Boolean)createTableForObj:(sqlite3 *)ppDb obj:(id)obj createStyle:(PaintingliteDataBaseOptionsPrimaryKeyStyle)createStyle completeHandler:(void(^ __nullable)(NSString *tableName,PaintingliteSessionError *error,Boolean success))completeHandler;

/*!
@method alterTableForName: oldName: newName:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#import "PaintingliteExec.h"
#import "PaintingliteLog.h"
#import "PaintingliteWarningHelper.h"
#import "PaintingliteObjRuntimeProperty.h"

@interface PaintingliteDataBaseOptions()
@property (nonatomic,strong)PaintingliteExec *exec; //执行语句
Expand Down Expand Up @@ -86,7 +87,7 @@ - (Boolean)createTableForObj:(sqlite3 *)ppDb obj:(id)obj createStyle:(Paintingli
return [self createTableForObj:ppDb obj:obj createStyle:createStyle completeHandler:nil];
}

- (Boolean)createTableForObj:(sqlite3 *)ppDb obj:(id)obj createStyle:(PaintingliteDataBaseOptionsPrimaryKeyStyle)createStyle completeHandler:(void (^)(PaintingliteSessionError * _Nonnull, Boolean))completeHandler{
- (Boolean)createTableForObj:(sqlite3 *)ppDb obj:(id)obj createStyle:(PaintingliteDataBaseOptionsPrimaryKeyStyle)createStyle completeHandler:(void (^)(NSString *tableName,PaintingliteSessionError * _Nonnull, Boolean))completeHandler{
/// 对象为空
if (obj == NULL || obj == (id)[NSNull null]) {
[PaintingliteWarningHelper warningReason:@"Object IS NULL OR Object IS [NSNull null]" time:[NSDate date] solve:@"Reset The Object" args:nil];
Expand All @@ -96,7 +97,7 @@ - (Boolean)createTableForObj:(sqlite3 *)ppDb obj:(id)obj createStyle:(Paintingli
Boolean success = [self.exec sqlite3Exec:ppDb obj:obj status:PaintingliteExecCreate createStyle:createStyle];

if (completeHandler != nil) {
completeHandler([PaintingliteSessionError sharePaintingliteSessionError],success);
completeHandler([[PaintingliteObjRuntimeProperty getObjName:obj] lowercaseString],[PaintingliteSessionError sharePaintingliteSessionError],success);
}

return success;
Expand Down
23 changes: 11 additions & 12 deletions Paintinglite/Paintinglite/Paintinglite/PaintingliteExec.m
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ - (NSString *__nonnull)getOptTableName:(sqlite3 *)ppDb sql:(NSString *__nonnull)

if (self.isCreateTable && ![firstSQLWords isEqualToString:Paintinglite_Sqlite3_INSERT]) {
if ([[self getCurrentTableNameWithCache] containsObject:[tableName lowercaseString]]) {
[PaintingliteException PaintingliteException:@"表名存在" reason:@"数据库中已经存在表名,无法建立新表"];
[PaintingliteException paintingliteException:@"表名存在" reason:@"数据库中已经存在表名,无法建立新表"];
}
}else{
self.isCreateTable = YES;
Expand All @@ -159,15 +159,15 @@ - (NSString *__nonnull)getOptTableName:(sqlite3 *)ppDb sql:(NSString *__nonnull)
for (NSString *info in [self getTableInfo:ppDb tableName:tableName]) {
if ([info isEqualToString:column]) {
//相同的时候,则不更新
[PaintingliteException PaintingliteException:@"列表存在" reason:[NSString stringWithFormat:@"列表存在无法修改[%@]",column]];
[PaintingliteException paintingliteException:@"列表存在" reason:[NSString stringWithFormat:@"列表存在无法修改[%@]",column]];
}
}
[self isNotExistsTable:tableName];
}else if ([firstSQLWords isEqualToString:Paintinglite_Sqlite3_DROP]){
tableName = [[sql componentsSeparatedByString:Paintinglite_Sqlite3_SPACE]lastObject];

if (![[self getCurrentTableNameWithCache] containsObject:[tableName lowercaseString]]) {
[PaintingliteException PaintingliteException:@"表名不存在" reason:[NSString stringWithFormat:@"数据库中查找不到表名[%@]",tableName]];
[PaintingliteException paintingliteException:@"表名不存在" reason:[NSString stringWithFormat:@"数据库中查找不到表名[%@]",tableName]];
}
}else if ([firstSQLWords isEqualToString:Paintinglite_Sqlite3_DELETE]){
if ([[sql uppercaseString] containsString:Paintinglite_Sqlite3_WHERE]) {
Expand Down Expand Up @@ -342,7 +342,7 @@ - (NSMutableArray *)sqlite3Exec:(sqlite3 *)ppDb objName:(NSString *)objName{
NSString *objLowName = [objName lowercaseString];
//判断是否有这个表存在,存在则查询,否则报错
if (![[self getCurrentTableNameWithCache] containsObject:objLowName]) {
[PaintingliteException PaintingliteException:@"无法执行操作" reason:@"表名不存在"];
[PaintingliteException paintingliteException:@"无法执行操作" reason:@"表名不存在"];
}
//保存表结构快照
resArray = [self getTableInfo:ppDb tableName:objLowName];
Expand All @@ -367,8 +367,6 @@ - (Boolean)sqlite3Exec:(sqlite3 *)ppDb tableName:(NSString *)tableName content:(
if (tables.count != 0 && [tables containsObject:[tableName lowercaseString]]) {
//包含了就不能创建了
flag = false;

[PaintingliteException PaintingliteException:@"表名存在" reason:@"数据库中已经存在表名,无法建立新表"];
}else{
//创建数据库
if (flag) {
Expand Down Expand Up @@ -396,7 +394,7 @@ - (Boolean)sqlite3Exec:(sqlite3 *)ppDb tableName:(NSString *)tableName{
//不能删除
flag = false;

[PaintingliteException PaintingliteException:@"表名不存在" reason:@"数据库中未找到表名"];
[PaintingliteException paintingliteException:@"表名不存在" reason:@"数据库中未找到表名"];
}

return flag;
Expand Down Expand Up @@ -431,7 +429,8 @@ - (void)getPaintingliteExecCreate:(sqlite3 *)ppDb objName:(NSString *__nonnull)o

//如果存在表则不能创建
if ([[self getCurrentTableNameWithCache] containsObject:[[PaintingliteObjRuntimeProperty getObjName:obj] lowercaseString]]) {
[PaintingliteException PaintingliteException:@"表名存在" reason:@"数据库中已经存在表名,无法建立新表"];
// [PaintingliteException PaintingliteException:@"表名存在" reason:@"数据库中已经存在表名,无法建立新表"];

}

//默认选择UUID作为主键
Expand Down Expand Up @@ -462,7 +461,7 @@ - (void)getPaintingliteExecAlterRename:(sqlite3 *)ppDb obj:(id)obj{
if ([[self getCurrentTableNameWithCache] containsObject:(NSString *)obj[0]]) {
[self sqlite3Exec:ppDb sql:Paintinglite_Sqlite3_ALTER_RENAME_SQL(obj[0],obj[1])];
}else{
[PaintingliteException PaintingliteException:@"表名不存在" reason:@"数据库中未找到表名"];
[PaintingliteException paintingliteException:@"表名不存在" reason:@"数据库中未找到表名"];
}
}

Expand All @@ -471,7 +470,7 @@ - (void)getPaintingliteExecAlterAddColumn:(sqlite3 *)ppDb obj:(id)obj{
if ([[self getCurrentTableNameWithCache] containsObject:[(NSString *)obj[0] lowercaseString]]){
[self sqlite3Exec:ppDb sql:Paintinglite_Sqlite3_ALTER_ADD_COLUMN_SQL(obj[0],obj[1],obj[2])];
}else{
[PaintingliteException PaintingliteException:@"表名不存在" reason:@"数据库中未找到表名"];
[PaintingliteException paintingliteException:@"表名不存在" reason:@"数据库中未找到表名"];
}
}

Expand All @@ -495,7 +494,7 @@ - (void)getPaintingliteExecAlterObj:(sqlite3 *)ppDb objName:(NSString *)objName
}
}
}else{
[PaintingliteException PaintingliteException:@"表名不存在" reason:@"数据库中未找到表名"];
[PaintingliteException paintingliteException:@"表名不存在" reason:@"数据库中未找到表名"];
}
}

Expand Down Expand Up @@ -649,7 +648,7 @@ - (Boolean)isNotExistsTable:(NSString *__nonnull)tableName{
}
}

[PaintingliteException PaintingliteException:@"表名不存在" reason:[NSString stringWithFormat:@"数据库中查找不到表名[%@]",tableName]];
[PaintingliteException paintingliteException:@"表名不存在" reason:[NSString stringWithFormat:@"数据库中查找不到表名[%@]",tableName]];
// }

return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ NS_ASSUME_NONNULL_BEGIN
@param completeHandler 回调操作
@result Boolean
*/
- (Boolean)createTableForObj:(id)obj primaryKeyStyle:(PaintingliteDataBaseOptionsPrimaryKeyStyle)primaryKeyStyle completeHandler:(void(^ __nullable)(PaintingliteSessionError *error,Boolean success))completeHandler;
- (Boolean)createTableForObj:(id)obj primaryKeyStyle:(PaintingliteDataBaseOptionsPrimaryKeyStyle)primaryKeyStyle completeHandler:(void(^ __nullable)(NSString *tableName,PaintingliteSessionError *error,Boolean success))completeHandler;

/*!
@method alterTableForName: newName:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,7 @@ - (Boolean)createTableForObj:(id)obj primaryKeyStyle:(PaintingliteDataBaseOption
return [self createTableForObj:obj primaryKeyStyle:primaryKeyStyle completeHandler:nil];
}

- (Boolean)createTableForObj:(id)obj primaryKeyStyle:(PaintingliteDataBaseOptionsPrimaryKeyStyle)primaryKeyStyle completeHandler:(void (^)(PaintingliteSessionError * _Nonnull, Boolean))completeHandler{
- (Boolean)createTableForObj:(id)obj primaryKeyStyle:(PaintingliteDataBaseOptionsPrimaryKeyStyle)primaryKeyStyle completeHandler:(void (^)(NSString *_Nonnull,PaintingliteSessionError * _Nonnull, Boolean))completeHandler{
if (!self.isOpen) {
[self warningOpenDatabase];
return false;
Expand Down
Loading

0 comments on commit a6a70fd

Please sign in to comment.