SQLITE3发出警告的“不兼容的指针类型”

问题描述:

我是相当新的源码(3小时)SQLITE3发出警告的“不兼容的指针类型”

什么,我想在这里做的是让一个数据库行到自定义对象(物具有相同NR 。propertys为NR的表中的列的......所以应该不会有问题)

所以这是我的代码:

#import <Foundation/Foundation.h> 
#import "/usr/include/sqlite3.h" 
#import "Headers.h" 
@interface DataDb : NSObject{ 
sqlite3 *database; 
} 

+(DataDb*)database; 
+(Singleton*)getSgForIndex:(int)index; 

@end 





#import "DataDb.h" 

@implementation DataDb 

static DataDb *database; 


+(DataDb*)database 
{ 
    if(database==nil){ 
     database=[[DataDb alloc]init]; 
    } 
    return database; 
} 


-(id)init{ 
    if(self=[super init]){ 
     NSString *sqliteDb =[[NSBundle mainBundle] pathForResource:@"Data" ofType:@"sqlite3"]; 

     if(sqlite3_open([sqliteDb UTF8String], &database) !=SQLITE_OK){ 
      NSLog(@"Failed to open database!"); 
      return nil; 
     } 

    } 
    return self; 
} 


+(Singleton*)getSgForIndex:(int)index{ 

    Singleton *returnSingleton =[[[Singleton alloc]init]autorelease]; 
    NSString *query =[NSString stringWithFormat:@"SELECT * FROM Quiz WHERE Q_Id=%i",index]; 
    sqlite3_stmt *statement; 

    if (sqlite3_prepare_v2(database,[query UTF8String], -1, &statement, NULL)==SQLITE_OK) { 
     NSLog (@"Works!"); 
     /* 
     ...code... 
     */ 

     sqlite3_finalize(statement); 
    }else{ 
     NSLog(@"Failed!!"); 
    } 


    return returnSingleton; 
} 


-(void)dealloc{ 
    sqlite3_close(database); 
    [super dealloc]; 
} 
@end 

..和编译器具有以下问题在sqlite3_prepare_v2功能:

到类型的参数不兼容的指针类型传递“DataDb *”“sqlite3的*”(又名“结构的sqlite3 *”)

为了公平...代码的一个示例代码我发现,但它的修改版本为有问题的人工作,我不明白为什么它不适用于我

+0

告诉我你使用哪个教程 – Hector 2012-03-15 05:17:25

因为你已经声明getSgForIndex作为类方法而不是一个实例,对数据库的引用最终是static DataDb *database而不是sqlite3 *database你想要的。您必须使getSgForIndex成为实例方法,而不是类方法。 (你可能不想把它们称为数据库来帮助减少混淆)

+0

它的工作原理...终于...谢谢你 – skytz 2012-03-15 05:48:43