Tag: sqlite3

在iOS中从sqlite数据库存储和检索图像

– (void)viewDidLoad { [super viewDidLoad]; [self createDB]; } -(void)createDB { NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *docdir = [path objectAtIndex:0]; //path[0]; dbpath = [docdir stringByAppendingPathComponent:@"arun.sqlite"]; NSLog(@"database path : %@",dbpath); NSFileManager *filemgr = [NSFileManager defaultManager]; if ([filemgr fileExistsAtPath:dbpath] == NO) { //OPEN AND CREATE DATABASE if (sqlite3_open([dbpath UTF8String], &myDB) == SQLITE_OK) { //CREATE TABLE NSString […]

无法在iOS中创build具有文件保护function的SQLite3数据库

背景:我一直在观看WWDC 2011 – 208保护iOS应用程序。 他们提到如何使用称为NSFileProtection的文件encryption来保护我们的数据。 虽然我发现自动方法(@ 38:00)被窃听 ,我希望手动方式(@ 37:00)不是。 我尝试使用图像文件保护,一切都很好。 只有Sqlite我不能创build。 问题:我尝试使用sqlite3_open_v2创buildSQLite3数据库(无核心数据),并将SQLITE_OPEN_FILEPROTECTION_COMPLETE作为第三个参数的标志。 它不返回SQLITE_OK 。 码: if (sqlite3_open_v2([databasePath UTF8String], &database, SQLITE_OPEN_FILEPROTECTION_COMPLETE, NULL) == SQLITE_OK){ //everything works }else{ //failed } 更新: 正如borrrden提到的,都导致了以下错误代码: SQLITE_MISUSE (库使用不正确) 更新2: borrrden的第二个评论是正确的,指出两个标志的需要。 它遵循以下代码: if (sqlite3_open_v2([databasePath UTF8String], &database, SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_FILEPROTECTION_COMPLETE, NULL) == SQLITE_OK)

在iPhone 5的Sqlite磁盘I / O错误

我得到一个应用程序密集使用SQLite,它在模拟器,并在iphone 4 / 4s完美的作品 当我安装在iphone 5和更大,我得到这个错误: Unknown error finalizing or resetting statement (10: disk I/O error) 为什么只发生在iPhone 5上? 设备上有12 GB的空间。 谢谢!

ObjectiveC sqlite3问题

我发现当我的iPhone应用程序更新/插入到我的表中时,我有一个问题,因为我有一个文本列,当该文本包含一个符号,事情会搞砸。 处理这个问题的最好方法是什么? 在使用带有撇号的string之前,我应该检查一下吗? 有没有一个快速的方法来添加格式,将在每个撇号前添加一个转义字符? 这个问题甚至有道理吗? 大声笑。

为什么我得到一个SQLITE_MISUSE:内存不足错误?

我正在写一个直接访问SQLite的iOS应用程序。 我在Android上多次做了这样的事情,所以我很努力地看到我的错误在哪里 – 但是我的插入正在返回SQLITE_MISUSE错误(代码21),消息“内存不足”。 以下是我已经采取的步骤来引导我这个插入。 首先, 创build表格 : NSString *sql = @"CREATE TABLE IF NOT EXISTS UsersTable (lastName TEXT,id TEXT PRIMARY KEY NOT NULL,picture BLOB,firstName TEXT,age TEXT,email TEXT,sex TEXT,height TEXT,weight TEXT)"; //create the database if it does not yet exist NSFileManager *filemgr = [NSFileManager defaultManager]; if ([filemgr fileExistsAtPath: path ] == NO) { const char […]

sqlite将文本转换为数字

我有一个带有以下结构的表的SQLite数据库LocationName纬度经度都定义为varchar。 我怎么可以构造一个sql语句来获得所有的位置具有特定纬度范围给十进位的纬度。 有没有办法做到这一点从varchar转换为十进制值? 或者我必须通过返回语句并手动进行转换

如何将代码块分派到iOS中的同一线程?

问题的主要方面:关于iOS。 我可以以某种方式派发代码块,他们将(a)在后台运行,(b)在同一个线程中运行? 我想在后台运行一些耗时的操作,但是这些操作必须在同一个线程上运行,因为它们涉及资源,不能在线程之间共享。 进一步的技术细节,如果需要的话:这是关于为Apache Cordova实现一个sqlite插件,这是一个移动平台上的HTML5应用程序的框架。 这个插件应该是Cordova的插件API中的WebSQL的一个实现。 (这意味着,不可能将整个事务包装在单个块中,这样可以使一切变得更容易)。 以下是Cordova文档中的一些代码: – (void)myPluginMethod:(CDVInvokedUrlCommand*)command { // Check command.arguments here. [self.commandDelegate runInBackground:^{ NSString* payload = nil; // Some blocking logic… CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:payload]; // The sendPluginResult method is thread-safe. [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; } 但据我所知,不能保证,那些派发的代码块(请参阅runInBackground )将在同一个线程上运行。

SQLite3错误 – iOS

我怎样才能弄清SQLite3在我进行SQL调用时给我的错误: int success = sqlite3_prepare_v2(database, sql, -1, &stmt, NULL); if(success != SQLITE_OK) { NSLog(@"create stmt failed %@",stmt); } 所有我知道的是,如果它失败了,但有没有办法得到实际的错误,或者为什么失败?

如何debugginglocking的sqlite3数据库

我正在写一个使用由fmdatabase包装的sqlite3的iOS应用程序。 我遇到的问题是,在某些时候,我的程序被卡在FMDatabase库的一个循环中,尤其是一个调用sqlite3_step并发现数据库正忙的函数,然后一遍又一遍地重试。 我正在寻找一般的debugging工具和技巧,因为这将是我的整个设置太多。 有些事情可能是重要的,我打开一个数据库句柄到一个已经在另一个线程中有句柄的数据库。 sqlite3_threadsafe()返回2,所以我知道它的启用。 我也通过一个非常简单的select和更新语句来testing这个新的连接。 当我让我的程序运行,并尝试运行数据库更新时,我卡住了。 我的程序自己的更新语句没有错,因为这个查询运行良好,当我不打开两个连接。 然而,我没有看到我可能会出错的地方… 任何帮助或提示,我可能是错误的将不胜感激。

通过从分号中分离,从单个查询中删除多个表

我想从sqlite的单个操作中删除多个表。 我试着用分号分隔它,但它没有按预期工作。 这是我现在的代码: NSString *query = @"DELETE from Friends;DELETE from Stream;DELETE from Version"; 我需要一些指导,说明问题在这里,或者我错过了什么。