Tag: sqlite

SQLite表花费时间在LIKE查询中获取logging

场景 :数据库是sqlite(需要encryption数据库中的logging,因此使用iOS的SQL密码API) 数据库中有一个名为partnumber的表,其中包含模式,如下所示: CREATE TABLE partnumber ( objid varchar PRIMARY KEY, description varchar, make varchar, model varcha, partnumber varchar, SSOKey varchar, PMOKey varchar ) 该表包含大约80K条logging。 用户界面视图中有3个文本字段,用户可以在其中inputsearch条件,并在用户input字母后立即进行search。 3个文本字段是:txtFieldDescription,txtFieldMake和txtFieldModel。 假设第一个用户在txtFieldDescription中inputsearch词作为“monitor”。 所以,每个字母将执行的查询是: 1。 SELECT DISTINCT description COLLATE NOCASE FROM partnumber where description like '%m%' 2。 SELECT DISTINCT description COLLATE NOCASE FROM partnumber where description like '%mo%' 3。 SELECT […]

MonoTouch:SQLite-net线程安全和SQLiteConfig.Serialized

我想通过调用这样的代码使SQLite默认为“更多”线程安全: SqliteConnection.SetConfig (SQLiteConfig.Serialized); 我认为这涉及到设置: DSQLITE_THREADSAFE=1 但如何做到这一点也是一个谜。 使用真棒SQLite-NET的ORM的MonoTouch,似乎没有办法设置SQLiteConfig.Serialized? 想法?

在sqlite上删除消息。 越狱iphone

在我的应用程序中,我想自动删除短信。 例如,当我点击一个button触发一个方法来在SQLite中执行SQL。 SQL是这样的: drop trigger if exists delete_message; delete from message; delete from madrid_chat; CREATE TRIGGER if not exists delete_message AFTER DELETE ON message WHEN NOT read(old.flags) BEGIN UPDATE msg_group SET unread_count = (SELECT unread_count FROM msg_group WHERE ROWID = old.group_id) – 1 WHERE ROWID = old.group_id; END 它可以成功执行(文件位于/private/var/mobile/Library/SMS/sms.db )。 但是在SMS消息应用程序中,消息被删除了,聊天组没有。 iPhone是ios5.1.1,越狱。 iOS有另一种保存消息的方式吗? 我下载了sms.db,并删除了madrid_chat和message表的数据。 然后我上传到iPhone。 […]

为什么iOS在通过UIManagedDocument保存核心数据时延迟?

我正在使用核心数据在SQLite数据库中保存一些信息。 我正在用模拟器进行testing,并使用sqlite3来查询数据库,并validation我正在存储我所期望的。 我所看到的是数据不会出现在SQLite数据库中,直到我保存好15-20秒之后。 这里是我把我的保存下来的代码: NSEntityDescription *customerType = [NSEntityDescription entityForName:@"CustomerType" inManagedObjectContext:context]; CustomerType *ct = [[CustomerType alloc]initWithEntity:customerType insertIntoManagedObjectContext:context ]; ct.code = code; NSError* error = nil; if (![context save:&error] || error) NSLog(@"Saved new customer (error=%@)", [error debugDescription]); 保存操作完成而没有错误。 有什么提示,为什么我看到这个延迟? 我的保存操作是否运行不正常,或者延迟将数据保存在模拟器的工件中?

内存泄漏(?)后,sqlite + fmdb真空命令

我通过FMDB封装在我的应用程序中使用sqlite。 调用VACUUM之前,我的应用中的内存使用量为2.25 MB: [myFmdb executeUpdate: @"VACUUM;" ]; 后缀在5.8 MB,我似乎无法回收内存。 后真空,仪器/分配工具显示吨活字节sqlite3MemMalloc调用,每个分配1.5 K. closures数据库并重新打开(一个选项),我怎么能清理这个呢? 编辑 :closures并重新打开数据库连接清除内存。 这是我的解决scheme,除非有人可以进一步了解这一点。

使用事务插入是抛出错误Sqlite.swift

我创build了一个数据库类,如下所示: class Database { static let instance = Database() private let categories = Table("Category") private var db: Connection? let cat_id = Expression<String>("id") let cat_name = Expression<String>("name") private init() { let path = NSSearchPathForDirectoriesInDomains( .documentDirectory, .userDomainMask, true ).first! do { db = try Connection("\(path)/SalesPresenterDatabase.sqlite3") createTable() } catch { print("error") } } func createTable() { do{ try […]

Xcode核心数据:将现有的XML更改为Sqlite(NSXMLStoreType为NSSQLiteStoreType)

在我的第一个应用程序中,我在持久性商店协调员中使用了一个NSXMLStoreType。 [storeCooordinator addPersistentStoreWithType:NSXMLStoreType configuration:nil URL:storeURL options:options error:nil]; 现在,我想更改为NSSQLiteStoreType: [storeCooordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:nil]; 应用程序崩溃,如果我只是改变商店types。 那我该怎么办? 我可以做一次吗? 检查旧商店是否存在 如果是转换成sqlite和 之后删除旧的XML存储? 我不知道如何将其转换为SQLite。 模型是一样的。 编辑&答复 我使用这个解决scheme迁移一次数据库( 感谢Volker ) //-> applicationFilesDirectory is the url to the documents directory NSURL* oldURL = [applicationFilesDirectory URLByAppendingPathComponent:@"DBName1.xml"]; NSURL* newURL = [applicationFilesDirectory URLByAppendingPathComponent:@"DBName2.sqlite"]; NSError *error = nil; NSFileManager * fileManager = [NSFileManager defaultManager]; […]

iPhone中的数据库被locking在sqlite中

你好朋友,我已经search了很多关于这个错误。 我发现像你一样的build议必须使用sqlite_finalize()语句,我使用它。 看看我的代码。 – (void)updatePostingsForLike:(NSString *)postingKey isLiked:(NSString *)isLiked { [self initWithDB]; sqlite3_stmt *stmt; if(sqlite3_open([[self dbPath] UTF8String],&(db)) == SQLITE_OK) { NSString *str=[@"" stringByAppendingFormat:@"update posting set isLiked='%@' where postKey='%@'",isLiked,postingKey]; const char *sql=[str cStringUsingEncoding:NSUTF8StringEncoding]; int status; status= sqlite3_prepare_v2(db,sql, -1, &stmt, NULL); if(SQLITE_DONE != sqlite3_step(stmt)) { NSLog(@"%s",sqlite3_errmsg(db)); } sqlite3_finalize(stmt); [self closeConnection]; }} 我遵循了所有规则。 我只能更新我的logging一次。 第一次只。 它第二次抛出错误。 应该是什么解决scheme? 我从最近两天就陷入了这个问题!

更新/将内容插入iPhone应用程序更新中的现有Sqlite数据库

我已经经历了类似的性质的其他问题,但他们都与更新应用程序更新之前的SQLite数据库有关。 我一直在为以前的所有应用程序做这件事,因为它们本质上是指代性的,而且一个简单的replace就足够了。 我正在使用的这个特定的应用程序是一个测验游戏,分数需要保持。 目前共有四个级别,共有十五个问题,稍后更新可能会增加。 由于我从来没有这样做过,所以我很好奇,打算第一次以正确的方式做到这一点。 所以这里是我的查询: 更新SO的大师推荐的内容的首选方法是什么? 是否有一个版本号(可能在数据库本身),并在第一次运行的新应用程序,新的内容插入表中? 什么是存储插入查询的首选方法? 他们应该在一个实现文件中硬编码吗? PS。 我将数据库复制到Documents目录,所以它保持应用程序更新。 编辑:我应该补充说,测验应用程序是一种“标识测验”复制品,其中所有问题的得分(或将回答/未答复的问题的状态)需要保持。 所以在第一个版本中有60个问题,并且随着用户回答他们的状态被改变。 编辑2:这是我最关心的表结构,问题表: _id(Integer,PRIMARY键),levelId(Integer),QuestionImage(Varchar),CorrectAnswer(Varchar),boolAnsweredCorrectly(Integer)。 测验就像Logos Quiz。 有一个图像,用户必须键入答案。 如果input的答案与DB中的correctanswer匹配,则boolAnsweredCorrectly设置为true。 我主要关心的是boolAnsweredCorrectly(根据结果可能是0或1)。 编辑3:当我说插入数据更新的应用程序,我的意思是这个。 假设第一个版本有60个问题。 在第二个版本中增加了40个新的问题。 所以,当用户将应用程序更新到第二个版本时,需要将新的40个问题插入到问题表中。 这是为了使以前的60个问题不会混淆并保持不变。

在iOS内存问题的Sqlite

我花了几个小时试图解决这个问题,但我刚刚放弃了; 我不知道什么是错的。 在我的应用程序中,我执行嵌套的SQL操作来正确设置所有对象。 出于某种原因,有时sqlite3对象不能正确释放,导致内存上升。 我知道这是正确使用sql3_close和sql3_finalize的问题。 但是,正如你所看到的,我想我已经正确地使用了它们。 这是问题的根源: – (NSArray *) getAllSessions { if (sqlite3_open(dbPath, &db) == SQLITE_OK) { if (sqlite3_prepare_v2(db, query_stmt, -1, &statement, NULL) == SQLITE_OK) { while (sqlite3_step(statement) == SQLITE_ROW) { //I found out that doing something like that //toAdd.in_loc = [self getIndoorLocationWithId:[NSNumber numberWithInt:(int)sqlite3_column_int(statement, 6)]]; //messes the memory up all the time //but doing […]