創(chuàng)建model類 ? WordNote
WordNote.h中
添加幾個(gè)屬性
//記事本ID
@property (nonatomic, assign) NSInteger WID;
//記事本Title
@property (nonatomic, copy) NSString *title;
//記事本記錄的內(nèi)容
@property (nonatomic, copy) NSString *note;
//記錄時(shí)間
@property (nonatomic, copy) NSString *time;
//文件夾的ID
@property (nonatomic, assign) NSInteger FID;
創(chuàng)建model類? FileMessage
FileMessage.h中
聲明屬性
//文件夾title
@property (nonatomic, copy) NSString *title;
//記錄時(shí)間
@property (nonatomic, copy) NSString *time;
//文件夾的id
@property (nonatomic, assign) NSInteger FID;
創(chuàng)建DataBaseHandle
DataBaseHandle.h中
//引入頭文件
#import "WordNote.h"
#import "FileMessage.h"
//添加方法
//數(shù)據(jù)庫(kù)單例
+ (DataBaseHandle *)sharedDataBaseHandle;
//打開數(shù)據(jù)庫(kù)
- (void)openDB;
//關(guān)閉數(shù)據(jù)庫(kù)
- (void)closeDB;
//創(chuàng)建記事本表
- (void)createWordNoteTable;
//創(chuàng)建文件夾表
- (void)createfileMessageTable;
//向WOrdNote里面插入一個(gè)WordNote類型的model
- (void)insertToWordNoteWith:(WordNote *)model;
//向fileMessage 表里面插入fileMessage類型的model
- (void)insertIntoFileMessageWith:(FileMessage *)model;
//根據(jù)WID刪除掉wordNote里面的某條數(shù)據(jù)
- (void)deleteFromWordNoteWithWID:(NSInteger )WID;
//根據(jù)FID刪掉WordNote里的一堆數(shù)據(jù)
- (void)deleteFromWordNoteWithFID:(NSInteger)FID;
//根據(jù)FID刪掉FileMessage里的一條數(shù)據(jù)
- (void)deleteFromFileMessageWithFID:(NSInteger)FID;
//根據(jù)FID在WordNote里面查詢數(shù)據(jù)
- (NSMutableArray *)searchFromWordNoteWithFID:(NSInteger )FID;
//查詢FileMessage里面的所有數(shù)據(jù)
- (NSMutableArray *)searchAllFromFileMessage;
DataBaseHandle.m中
#import<sqlite3.h>
#import@interface DataBaseHandle()
@property (nonatomic, copy) NSString *dbPath;
@end
//設(shè)置全局變量,
static DataBaseHandle *dataBase = nil;
/數(shù)據(jù)庫(kù)單例
+ (DataBaseHandle *)sharedDataBaseHandle
{
if (dataBase == nil) {
dataBase = [[DataBaseHandle alloc]init];
}
return dataBase;
}
//懶加載
- (NSString *)dbPath
{
if (_dbPath == nil) {
NSString *document = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
_dbPath = [document stringByAppendingPathComponent:@"word.sqlite"];
}
return _dbPath;
}
static sqlite3 *db = nil;
//打開數(shù)據(jù)庫(kù)
- (void)openDB
{
int result = sqlite3_open(self.dbPath.UTF8String, &db);
if (result == SQLITE_OK)
{
NSLog(@"打開成功");
}else
{
NSLog(@"打開失敗");
}
NSLog(@"databasePath == %@", _dbPath);
}
//關(guān)閉數(shù)據(jù)庫(kù)
- (void)closeDB
{
int result = sqlite3_close(db);
if (result == SQLITE_OK)
{
NSLog(@"關(guān)閉成功");
}else
{
NSLog(@"關(guān)閉失敗");
}
}
//創(chuàng)建記事本表
- (void)createWordNoteTable
{
NSString *createTable = @"create table? WordNote (WID integer primary key autoincrement, title text, note text, time text, FID integer)";
int result = sqlite3_exec(db, createTable.UTF8String, NULL, NULL, NULL);
if (result == SQLITE_OK)
{
NSLog(@"創(chuàng)建記事本表成功");
} else
{
NSLog(@"創(chuàng)建失敗 %d", result);
}
}
//創(chuàng)建文件夾表
- (void)createfileMessageTable
{
NSString *creatafile = @"create table if not exists fileMessage (FID integer primary key autoincrement, title text, time text)";
int result = sqlite3_exec(db, creatafile.UTF8String, NULL, NULL, NULL);
if (result == SQLITE_OK)
{
NSLog(@"創(chuàng)建文件夾表成功");
} else
{
NSLog(@"創(chuàng)建失敗");
}
}
//向WOrdNote里面插入一個(gè)WordNote類型的model
- (void)insertToWordNoteWith:(WordNote *)model
{
//插入流程
//第一步創(chuàng)建sql語(yǔ)句
NSString *insdrtString= @"insert into WordNote (title, note, time, FID) values (?, ?, ?, ?)";
//第二步:創(chuàng)建伴隨指針
sqlite3_stmt *stmt = nil;
//第三步:使用sqlite3_prepare方法預(yù)執(zhí)行sql語(yǔ)句
int result = sqlite3_prepare(db, insdrtString.UTF8String, -1, &stmt, NULL);
//第四步: 判斷是否預(yù)執(zhí)行成功,如果成功 進(jìn)行下一步
if (result == SQLITE_OK) {
//第五步:向?的位置插入數(shù)據(jù)
sqlite3_bind_text(stmt, 1, model.title.UTF8String, -1, NULL);
sqlite3_bind_text(stmt, 2, model.note.UTF8String, -1, NULL);
sqlite3_bind_text(stmt, 3, model.time.UTF8String, -1, NULL);
sqlite3_bind_int64(stmt, 4, model.FID);
//第六步:判斷伴隨指針是否完成
if (sqlite3_step(stmt) == SQLITE_DONE) {
NSLog(@"插入成功");
}
}
//第七步: 記得釋放伴隨指針
sqlite3_finalize(stmt);
}
//向fileMessage 表里面插入fileMessage類型的model
- (void)insertIntoFileMessageWith:(FileMessage *)model{
//插入流程
//第一步創(chuàng)建sql語(yǔ)句
NSString *fileMessageString = @"insert into fileMessage ( title, time) values (?, ?)";
//第二步:創(chuàng)建伴隨指針
sqlite3_stmt *stmt = nil;
//第三步:使用sqlite3_prepare方法預(yù)執(zhí)行sql語(yǔ)句
int result = sqlite3_prepare(db, fileMessageString.UTF8String, -1, &stmt, NULL);
//第四步: 判斷是否預(yù)執(zhí)行成功,如果成功 進(jìn)行下一步
if (result == SQLITE_OK) {
//第五步:向?的位置插入數(shù)據(jù)
sqlite3_bind_text(stmt, 1, model.title.UTF8String, -1, NULL);
sqlite3_bind_text(stmt, 2, model.time.UTF8String, -1, NULL);
//第六步:判斷伴隨指針是否完成
if (sqlite3_step(stmt) == SQLITE_DONE) {
NSLog(@"插入成功");
}
}
//第七步: 記得釋放伴隨指針
sqlite3_finalize(stmt);
}
#pragma mark --刪除方法
//根據(jù)WID刪除掉wordNote里面的某條數(shù)據(jù)
- (void)deleteFromWordNoteWithWID:(NSInteger )WID
{
//刪除流程
//第一步:創(chuàng)建sql語(yǔ)句
NSString *deleteString = [NSString stringWithFormat:@"delete from WordNote where WID = %ld", WID];
//第二步:執(zhí)行sql語(yǔ)句
int result = sqlite3_exec(db, deleteString.UTF8String, NULL, NULL, NULL);
if (result == SQLITE_OK) {
NSLog(@"刪除成功");
} else
{
NSLog(@"刪除失敗");
}
}
//根據(jù)FID刪掉WordNote里的一堆數(shù)據(jù)
- (void)deleteFromWordNoteWithFID:(NSInteger)FID
{
NSString *deleteString = [NSString stringWithFormat:@"delete from WordNote where FID = %ld", FID];
int reslut = sqlite3_exec(db, deleteString.UTF8String, NULL, NULL, NULL);
if (reslut == SQLITE_OK) {
NSLog(@"刪除成功");
}else
{
NSLog(@"刪除失敗");
}
}
//根據(jù)FID刪掉FileMessage里的一條數(shù)據(jù)
- (void)deleteFromFileMessageWithFID:(NSInteger)FID
{
NSString *deleteString = [NSString stringWithFormat:@"delete from fileMessage where FID = %ld", FID];
int reslut = sqlite3_exec(db, deleteString.UTF8String, NULL, NULL, NULL);
if (reslut == SQLITE_OK) {
NSLog(@"刪除成功");
}else
{
NSLog(@"刪除失敗");
}
}
//根據(jù)FID在WordNote里面查詢數(shù)據(jù)
- (NSMutableArray *)searchFromWordNoteWithFID:(NSInteger )FID
{
//查詢步驟
//第一步:創(chuàng)建sql語(yǔ)句
NSString *searchString = @"select * from WordNote where FID = ?";
//第二步:伴隨指針
sqlite3_stmt *stmt = nil;
//第三步:讓查詢語(yǔ)句 預(yù)處理
int result = sqlite3_prepare(db, searchString.UTF8String, -1, &stmt, NULL);
NSMutableArray *resultArray = [NSMutableArray array];
//第四步: 判斷預(yù)處理數(shù)據(jù)
if (result == SQLITE_OK)
{
//第四點(diǎn)五步:如果查詢語(yǔ)句有 ? 需要一部綁定的過(guò)程
sqlite3_bind_int64(stmt, 1, FID);
//第五步 循環(huán)取值
while (sqlite3_step(stmt)? == SQLITE_ROW)
{
WordNote *model = [WordNote new];
model.WID = sqlite3_column_int(stmt, 0);
model.title = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 1)];
model.note = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 2)];
model.time = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 3)];
model.FID = sqlite3_column_int(stmt, 4);
[resultArray addObject:model];
}
}
sqlite3_finalize(stmt);
return resultArray;
}
//查詢FileMessage里面的所有數(shù)據(jù)
- (NSMutableArray *)searchAllFromFileMessage
{
//查詢步驟
//第一步:創(chuàng)建sql語(yǔ)句
NSString *searchString = @"select? * from fileMessage";
//第二步:伴隨指針
sqlite3_stmt *stmt = nil;
//第三步:讓查詢語(yǔ)句 預(yù)處理
int reslut = sqlite3_prepare(db, searchString.UTF8String, -1, &stmt, NULL);
NSMutableArray *searchArray = [NSMutableArray array];
//第四步: 判斷預(yù)處理數(shù)據(jù)
if (reslut == SQLITE_OK)
{
//第五步 循環(huán)取值
while (sqlite3_step(stmt) == SQLITE_ROW)
{
FileMessage *model = [FileMessage new];
model.FID = sqlite3_column_int(stmt, 0);
model.title = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 1)];
model.time = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 2)];
[searchArray addObject:model];
}
}
sqlite3_finalize(stmt);
return searchArray;
}
?創(chuàng)建MyLongPressGestureRecognizer類
MyLongPressGestureRecognizer.h中
#warning 這是新的類
@interface MyLongPressGestureRecognizer : UILongPressGestureRecognizer
// 因?yàn)樵嫉拈L(zhǎng)按手勢(shì)沒有indexPath屬性,所以自定義一個(gè)長(zhǎng)按類,添加一個(gè)indexPath屬性
@property (nonatomic, strong) NSIndexPath *indexPath;
@end