当调用 sqlite3_prepare_v2() 函数的时候,是一个将SQL语句编译为sqlite内部一个结构体(sqlite3_stmt).该结构体中包含了将要执行的的SQL语句的信息.
通常情况下,应该是返回0。还有一些时候是返回其他数值。我以1为例,简单介绍一下错误解决的思路和方法:
我们尝试用以下代码来进行测试:
// Get the path to the documents directory and append the databaseName
NSString*documentPaths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath= [documentsDirstringByAppendingPathComponent:databaseName];
NSFileManager*fileManager = [NSFileManagerdefaultManager];
BOOL success = [fileManagerfileExistsAtPath:databasePath];
上面的这个path,我们可以看到,我们需要连接的数据库的那个路径。有时候,如果你的工程创建好了以后,在运行时会把database复制到这个路径下面。如果中途数据库发生了变化,随之有可能没有拷贝过去,那么这个路径下的数据库文件会和你工程里面的不一致。也许这个path下面的是一个大小为0字节的空数据库。所以通常即便是发现了数据库的存在,但是也不能保证你数据库的结构体是正确的。因此必须确保该数据库是所需要添加的数据库。操作方法如下:
NSString*defaultDBPath =[[[NSBundlemainBundle]resourcePath]stringByAppendingPathComponent:@"databaseName"];
success = [fileManag