大佬教程收集整理的这篇文章主要介绍了ios – i386的未定义符号:“_sqlite3_open”,引用来自:error,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Undefined symbols for architecture i386: "_sqlite3_open",referenced from: -[MyDataBase openOrCreateDatabase:] in MyDataBase.o "_sqlite3_exec",referenced from: -[MyDataBase createTable:] in MyDataBase.o -[MyDataBase InsertTable:] in MyDataBase.o -[MyDataBase updataTable:] in MyDataBase.o -[MyDataBase querryTableByCallBACk:] in MyDataBase.o "_sqlite3_close",referenced from: -[MyDataBase closeDatabase] in MyDataBase.o "_sqlite3_get_table",referenced from: -[MyDataBase querryTable:] in MyDataBase.o ld: symbol(s) not found for architecture i386 clang: error: linker command Failed with exit code 1 (use -v to see invocation)
这里有一些关键的方法:
创建数据库:
-(BOOL)openOrCreateDatabase:(NSString*)dbName { self.m_dbname = dbName; NSArray *path =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *documentsDirectory = [path objectATindex:0]; if(sqlite3_open([[documentsDirectory StringByAppendingPathComponent:dbName] UTF8String],&m_sql) !=sqlITE_OK) { NSLog(@"创建数据库失败"); return NO; } return YES; }
创建表:
-(BOOL)createTable:(NSString*)sqlCreateTable { if (![self openOrCreateDatabase:self.m_dbName]) { return NO; } char *errorMsg; if (sqlite3_exec (self.m_sql,[sqlCreateTable UTF8String],NULL,&errorMsg) != sqlITE_OK) { NSLog(@"创建数据表失败:%s",errorMsg); return NO; } [self closeDatabase]; return YES; }
-(void)closeDatabase { sqlite3_close(self.m_sql); } //insert -(BOOL)InsertTable:(NSString*)sqlInsert { if (![self openOrCreateDatabase:self.m_dbName]) { return NO; } char* errorMsg = NULL; if(sqlite3_exec(self.m_sql,[sqlInsert UTF8String],&errorMsg) ==sqlITE_OK) { [self closeDatabase]; return YES;} else { printf("更新表失败:%s",errorMsg); [self closeDatabase]; return NO; } return YES; }
更新表:
-(BOOL)updataTable:(NSString*)sqlupdata{ if (![self openOrCreateDatabase:self.m_dbName]) { return NO; } char *errorMsg; if (sqlite3_exec (self.m_sql,[sqlupdata UTF8String],&errorMsg) !=sqlITE_OK) { [self closeDatabase]; return YES; }else { return NO; } return YES; }
选择记录:
-(NSArray*)querryTable:(NSString*)sqlQuerry { if (![self openOrCreateDatabase:self.m_dbName]) { return nil; } int row = 0; int column = 0; char* errorMsg = NULL; char** dbResult = NULL; NSMutableArray* array = [[NSMutableArray alloc] init]; if(sqlite3_get_table(m_sql,[sqlQuerry UTF8String],&dbResult,&row,&column,&errorMsg ) == sqlITE_OK) { if (0 == row) { [self closeDatabase]; return nil; } int index = column; for(int i =0; i < row ; i++ ) { NSMutableDictionary* Dic = [[NSMutableDictionary alloc] init]; for(int j =0 ; j < column; j++ ) { if (dbresult[index]) { NSString* value = [[NSString alloc] initWithUTF8String:dbresult[index]]; NSString* key = [[NSString alloc] initWithUTF8String:dbresult[j]]; [Dic setObject:value forKey:key]; [value release]; [key release]; } index ++; } [array addObject:Dic]; [Dic release]; } }else { printf("%s",errorMsg); [self closeDatabase]; return nil; } [self closeDatabase]; return [array autorelease]; }
以上是大佬教程为你收集整理的ios – i386的未定义符号:“_sqlite3_open”,引用来自:error全部内容,希望文章能够帮你解决ios – i386的未定义符号:“_sqlite3_open”,引用来自:error所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。