Iphone SQLite问题:sqlite3\u打开([databasePath UTF8String],&;database)==SQLite\u正常)不工作

Iphone SQLite问题:sqlite3\u打开([databasePath UTF8String],&;database)==SQLite\u正常)不工作,iphone,objective-c,ios,sqlite,Iphone,Objective C,Ios,Sqlite,带注释的if()不起作用…有些人有治愈方法!!!我已经用了3个小时了……请拿出一个解决方案,你要打开数据库两次。您应该先关闭数据库连接,然后再打开数据库。这就是它不工作的原因。您正在打开数据库两次。您应该先关闭数据库连接,然后再打开数据库。这就是它不工作的原因。您可以使用我的代码,它对我来说工作正常:- -(void)myDatabaseFunction { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDir

带注释的if()不起作用…有些人有治愈方法!!!我已经用了3个小时了……请拿出一个解决方案,你要打开数据库两次。您应该先关闭数据库连接,然后再打开数据库。这就是它不工作的原因。

您正在打开数据库两次。您应该先关闭数据库连接,然后再打开数据库。这就是它不工作的原因。

您可以使用我的代码,它对我来说工作正常:-

-(void)myDatabaseFunction
{   
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"HHAuditToolDatabase.sqlite"];
if (sqlite3_open([writableDBPath UTF8String], &database) == SQLITE_OK){
NSLog(@"opening db");
NSString *keyValue;
NSString *sqlStr = @"SELECT * FROM HHAuditTable";
//following if() not working dude!!!!
//its working with !=SQLITE_OK      
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {

sqlite3_stmt *addStmt = nil;

if(sqlite3_prepare_v2(database,[sqlStr UTF8String], -1, &addStmt, NULL) != SQLITE_OK){
    NSLog(@"%@",sqlStr);
    while (sqlite3_step(addStmt) == SQLITE_ROW) {


const unsigned char *querry_returns = sqlite3_column_text(addStmt, 0);
        keyValue = [[NSString alloc]initWithUTF8String:(char *) sqlite3_column_text(addStmt, 0)];
        }

        NSLog(@"value from DB = %@",keyValue);
(void)myDatabaseFunction{
NSFileManager*fileManager=[NSFileManager defaultManager];
n错误*错误;
dbPath=[self-getDBPath];
BOOL success=[fileManager fileExistsAtPath:dbPath];
如果(!成功){
NSString*defaultDBPath=[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:@“flipsy.sqlite”];
success=[fileManager copyItemAtPath:defaultDBPath-toPath:dbPath-error:&error];
如果(!成功)
NSAssert1(0,@“无法创建带有消息“@.”,[错误本地化描述])的可写数据库文件;
}
NSString*sql=@“从HHAuditTable中选择*”;
NSInteger*intvalue;
结果=[[NSMUTABLEARRY alloc]init];
//NSLog(@“sql------>%@”,sql);
const char*sqlStatement=[sql UTF8String];
//if(sqlite3_打开([dbPath UTF8String],&database)==SQLITE_确定){
if(sqlite3\u prepare\u v2(数据库,sqlStatement,-1,&selectstmt,NULL)!=SQLITE\u确定){
}
否则{
//NSLog(@“%@”,dataTypeArray);

对于(int i=0;i您可以使用我的代码,它对我来说工作正常:-

-(void)myDatabaseFunction
{   
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"HHAuditToolDatabase.sqlite"];
if (sqlite3_open([writableDBPath UTF8String], &database) == SQLITE_OK){
NSLog(@"opening db");
NSString *keyValue;
NSString *sqlStr = @"SELECT * FROM HHAuditTable";
//following if() not working dude!!!!
//its working with !=SQLITE_OK      
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {

sqlite3_stmt *addStmt = nil;

if(sqlite3_prepare_v2(database,[sqlStr UTF8String], -1, &addStmt, NULL) != SQLITE_OK){
    NSLog(@"%@",sqlStr);
    while (sqlite3_step(addStmt) == SQLITE_ROW) {


const unsigned char *querry_returns = sqlite3_column_text(addStmt, 0);
        keyValue = [[NSString alloc]initWithUTF8String:(char *) sqlite3_column_text(addStmt, 0)];
        }

        NSLog(@"value from DB = %@",keyValue);
(void)myDatabaseFunction{
NSFileManager*fileManager=[NSFileManager defaultManager];
n错误*错误;
dbPath=[self-getDBPath];
BOOL success=[fileManager fileExistsAtPath:dbPath];
如果(!成功){
NSString*defaultDBPath=[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:@“flipsy.sqlite”];
success=[fileManager copyItemAtPath:defaultDBPath-toPath:dbPath-error:&error];
如果(!成功)
NSAssert1(0,@“无法创建带有消息“@.”,[错误本地化描述])的可写数据库文件;
}
NSString*sql=@“从HHAuditTable中选择*”;
NSInteger*intvalue;
结果=[[NSMUTABLEARRY alloc]init];
//NSLog(@“sql------>%@”,sql);
const char*sqlStatement=[sql UTF8String];
//if(sqlite3_打开([dbPath UTF8String],&database)==SQLITE_确定){
if(sqlite3\u prepare\u v2(数据库,sqlStatement,-1,&selectstmt,NULL)!=SQLITE\u确定){
}
否则{
//NSLog(@“%@”,dataTypeArray);

对于(int i=0;我只是想问他为什么要打开它两次!对不起,恶魔们…错误的变量名…无论如何@Hardik Shah我也会检查一下的…谢谢我只是想问他为什么要打开它两次!对不起,恶魔们…错误的变量名…无论如何@Hardik Shah我也会检查一下的…谢谢