-(void)dataBaseHandle{
sqlite3 *db;
NSString* srcPath = [[NSHomeDirectory()stringByAppendingPathComponent:@"Documents"]stringByAppendingPathComponent:@"modelData.db"];
NSLog(@"%@",srcPath);
if (sqlite3_open([srcPathUTF8String], &db)!=SQLITE_OK) {
sqlite3_close(db);
NSLog(@"打开数据库失败!");
}else{
NSString *sqlCreateTable =@"CREATE TABLE IF NOT EXISTS modelData (ID INTEGER PRIMARY KEY AUTOINCREMENT, data BLOB)";
[selfexecSql:sqlCreateTable];
for (int i=0; i<imgArr.count; i++) {
NSData* data = (NSData*)[imgArrobjectAtIndex:i];
sqlite3_stmt *statement;
//这个 sql语句特别之处在于 values 里面有个? 号。在sqlite3_prepare函数里,?号表示一个未定的值,它的值等下才插入。
constchar *sql ="INSERT INTO modelData(data) VALUES(?)";
if (sqlite3_prepare_v2(db, sql, -1, &statement,NULL) == SQLITE_OK) {
sqlite3_bind_blob(statement, 1, [data bytes], (int)[datalength], NULL);
if (sqlite3_step(statement) ==SQLITE_DONE) {
NSLog(@"写入成功!");
}else{
NSLog(@"写入失败!");
}
}
sqlite3_close(db);
sqlite3_finalize(statement);
}
}
}
//查询数据
NSString *sqlQuery = @"SELECT data FROM modelData";
sqlite3_stmt * statement;
if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, NULL) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
// char *name = (char*)sqlite3_column_text(statement, 1);
// NSString *nsNameStr = [[NSString alloc]initWithUTF8String:name];
int ss = sqlite3_column_bytes(statement, 0);
Byte *bt = (Byte*)sqlite3_column_blob(statement, 0);
NSData* dt = [NSData dataWithBytes:bt length:ss];
[testArr addObject:dt];
}
}
sqlite3_close(db);