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 *”)
为了公平...代码的一个示例代码我发现,但它的修改版本为有问题的人工作,我不明白为什么它不适用于我
答
因为你已经声明getSgForIndex作为类方法而不是一个实例,对数据库的引用最终是static DataDb *database
而不是sqlite3 *database
你想要的。您必须使getSgForIndex成为实例方法,而不是类方法。 (你可能不想把它们称为数据库来帮助减少混淆)
+0
它的工作原理...终于...谢谢你 – skytz 2012-03-15 05:48:43
告诉我你使用哪个教程 – Hector 2012-03-15 05:17:25