Tag: sqlite

FMDB executeUpdate DROP命令确实停止应用程序

我想在我的名为database.db的SQLite数据库文件中删除一个表。 使用后 NSLog(@"i show up in the console"); [db executeUpdate:@"DROP TABLE IF EXISTS `article`;"]; NSLog(@"i will not show up in the console"); 该应用程序停止在查询的位置。 在控制台中显示查询之前的NSLog。 在查询之后,NSlog直接显示在控制台窗口中。 另外,一个名为database.db-journal的临时文件在应用程序运行时在模拟器应用程序文件夹中不断创build和删除。 该应用程序不会崩溃,不会提供任何错误,不会继续…删除查询中的“IF EXISTS”不起作用,删除反引号不起作用,删除分号不起作用。 启用查询跟踪只显示FMDB正在处理我的查询,没有更多的显示。 我真的很困惑,为什么会发生这种情况。 我认为这个表在被删除前必须是空的,所以我添加了一个查询来删除它中的每个logging。 但是ID并不重要,该应用程序仍然陷入了drop-query。 我用尽了解决这个错误的可能性。 如果我在SQLite数据库浏览器2中执行drop命令,一切正常。 debugging器的进一步研究表明,FMDB封装进入无限循环,因为语句的返回值等于SQLITE_LOCKED常量,这意味着我要删除的表被locking。 在以前的查询中发送“UNLOCK TABLES”并不能解决这个问题。 为什么表被locking? 为什么从locking的表中删除logging将起作用?

是否有可能有一个远程SQLite数据库

你可以在服务器上远程存储一个sqlite数据库吗? 我正在build设一个iPhone应用程序,所有的教程似乎存储在iPhone本身的SQLite数据库…

在应用程序运行时replace核心数据sqlite文件,数据不会更新

我正在为我的应用程序开发备份/恢复系统,用户可以在其中下载核心数据存储(sqlite文件)的备份版本,并将当前使用的数据存储replace为下载的文件。 但是,一旦用户下载文件并replace当前的数据存储,则没有任何数据显示为已更新。 但是,当应用程序退出并重新启动,恢复的数据可用。 我如何强制我的应用程序重新加载核心数据存储的文件? 我尝试从我的UIViewController中访问应用程序委托来恢复数据,像这样,重build核心数据堆栈,并在导航堆栈中的所有视图控制器中传播: MyAppDelegate *app = [[UIApplication sharedApplication] delegate]; app.managedObjectContext = nil; app.persistentStoreCoordinator = nil; app.managedObjectModel = nil; managedObjectContext = [app managedObjectContext]; NSArray *controllers = [self.navigationController viewControllers]; UIViewController *c; for (int i = 0; i < [controllers count]; i++) { c = [controllers objectAtIndex:i]; [c setManagedObjectContext:managedObjectContext]; } 但是这不起作用,当我回到根视图控制器时,它只会引发以下错误: 'The NSManagedObject with ID:0x5d79060 <x-coredata://D8E73D64-C9BA-4CFA-9213-F8BD61749155/MyObject/p2> […]

如何在sqlite ios中的已经创build的表中添加唯一约束?

我已经通过sqlite数据库浏览器现在已经使数据库和表,因为我让从facebook添加选定的朋友名称到用户,但我不希望第二次,当他们正在添加,然后相同的名称不应该得到添加在数据库中,所以如何在sqlite中添加约束 我试图检查SQLite数据库浏览器,但没有什么可以改变它 我尝试了丽塔,但在那里有select在丽塔使它非空和独特的,但我不能点击该checkbox,我不知道为什么 PLZ的帮助

FMDB ios没有这样的表

我有一个SQLite项目的问题,我正在做,我正在使用FMDB,我遵循一个简单的例子,但没有工作。 而我找不到错误。 我从terminal做了我的数据库模式,我把它的一些数据。 我对ios开发很陌生,所以我不知道我是否做了好几步。 这就是我所做的: 1 – 我做了我的数据库模式,并添加一些字段。 2 – 我将database.db复制到xcode中的项目文件夹中。 3 – 我添加FMDB文件。 4 – 我添加sqlite3.dylib 5 – 我把这个代码: – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.dbname = @"database.db"; NSArray * docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString * docDIr = [docPath objectAtIndex:0]; self.dbpath = [docDIr stringByAppendingPathComponent:dbname]; [self checkDB]; [self getQ]; return YES; } -(void) getQ […]

数据库在IOS Sqlite3和数据库

我正在学习iOS数据库中的一些概念…我知道sqlite3(开源)是用于数据库,但我正在经历一些github代码… 并碰到这两行: NSString *sqLiteDb = [[NSBundle mainBundle] pathForResource:@"banklist" ofType:@"sqlite3"] 和 NSString *databaseFilename =@"abc.db" 你能告诉我,我们将在哪里使用sqlite3和哪里的db ? 你也可以提供一些很好的链接来学习iOS的数据库(从示例项目中,当我打开文件中的db文件我不明白)? 我怎样才能打开db文件和sqlite文件? 有什么免费的工具可用于iOS读取这些数据库文件?

SQLite错误:EXC_BAD_INSTRUCTION(code = EXC_I386_INVOP,subcode = 0x0)-iOS

当我试图插入数据到我的表,有时我得到这个错误,我的应用程序崩溃! 请先解决我的问题。 崩溃日志: Observation(4001,0x10dd67000) malloc: *** error for object 0x7fff3a917100: Non-aligned pointer being freed (2) *** set a breakpoint in malloc_error_break to debug 2016-11-03 11:12:03.063 Observation[4001:46477] Insertion failed ! Printing description of dbpath: (const char *) dbpath = 0x00007fff3b8a5690 "/Users/macbt/Library/Developer/CoreSimulator/Devices/0EEC62AE-6DF0-4FC4-9D30-1EB90CB695A5/data/Containers/Data/Application/A709E729-3162-4CC8-B9FF-2F22A32FC6BD/Documents/ObservationDB.db" Printing description of insertSQL: insert into table_hazard (id, name, modifiedDate) values ("1","Hazard", "03/11/2016 11:12:03 AM") […]

sqlite没有更新我的数据库的iOS

我正在尝试更新我的sqlite数据库,但这段代码不适合我。 请帮我找出这个有什么问题。 -(BOOL)StoreFavourite:(NSString*)fav :(int)DuaId { NSString* mydbpath=[self pathfinder]; const char *dbpath=[mydbpath UTF8String]; if(sqlite3_open(dbpath,&database )==SQLITE_OK) { NSString *query = [NSString stringWithFormat:@"UPDATE Dua SET favourite=\'%@\' WHERE dua_id=%d ",fav,DuaId]; const char *query_statement=[query UTF8String]; if(sqlite3_prepare_v2(database, query_statement, -1, &statement, NULL)==SQLITE_OK) { while(sqlite3_step(statement) == SQLITE_DONE) { return YES; } sqlite3_finalize(statement); } } return YES; }

如何覆盖iOS中的SQLite数据库

我创build了一个应用程序,我在哪里使用SQLlite数据库…如果需要,我复制该数据库在应用程序的第一次启动NSCaches目录中使用以下方法: – (void) copyDatabaseIfNeeded { //Using NSFileManager we can perform many file system operations. NSFileManager *fileManager = [NSFileManager defaultManager]; NSError *error; NSString *dbPath = [self getDBPath]; BOOL success = [fileManager fileExistsAtPath:dbPath]; if(!success) { NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"datenbankSpeed"]; success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error]; if (!success) NSAssert1(0, @"Failed to create writable database file […]

iOS中的SQLite安全

我正在开发使用sqllite db的应用程序。 我想为DB提供安全性。 有什么办法来提供安全的SQLite数据库,以便没有人可以通过黑客设备或其他东西读取它。 我们应该提供任何encryption或苹果提供自己的安全? 哪些是提供应用程序数据库安全的方法? 谢谢