正在尝试访问sqlite数据库
sqlite3_step应该返回0?但事实并非如此!
if(sqlite3_open([DatabasePath UTF8String],&database)==SQLITE_OK){
self.searchtext.text=DatabasePath ;
const char *sql="select *from cars";
sqlite3_stmt *selectstatment;
if(sqlite3_prepare_v2(database,sql,-1,&selectstatment,Nil)==SQLITE_OK){
self.searchtext.text=@" database prepared";
while(sqlite3_step(selectstatment)==SQLITE_OK){
// fetch the id
SQLITETEST10000AppDelegate *carobject=[[SQLITETEST10000AppDelegate alloc] init ];
carobject->primarykey=sqlite3_column_int(selectstatment, 0);
//fetch the name
carobject.carname =[NSString stringWithUTF8String:(char*)sqlite3_column_int(selectstatment, 1)];
[appdelegate.Cars addObject:carobject];
[carobject release];
}
}else self.searchtext.text=@" database Not prepared";
}
最佳答案
您应该read the sqlite3 C API documentation (this page for sqlite3_step
function)sqlite3_step
可以返回多个值,在一切正常的情况下,最常见的是SQLITE_ROW
表示成功返回了一行,而SQLITE_DONE
表示完成了对查询返回的所有行的迭代。 sqlite3_step
从不返回SQLITE_OK
。
值100(请参见the result codes page in the doc too)与SQLITE_ROW
相对应,因此这完全符合您的情况。
关于iphone - sqlite3_step(statement)。返回100,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7659256/