2010-08-18 84 views
0

我想为我的iPhone应用程序使用sqlite3。但它不起作用。方案是: - 在按钮的单击事件上,方法应该运行并从数据库检索数据。但我的程序序列不会进入sqlite3不能在我的iphone应用程序中工作

if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { 
    const char *sqlStatement = "select * from records"; 
    sqlite3_stmt *compiledStatement; 
    0NSLog(@"%s", sqlite3_errmsg(database)); // Results - no error 
- 
    if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { 
//here NSLog statement does not work. 

打开数据库没有问题。应该是什么原因?任何可观的解决方案。 谢谢

回答

0

下面是我自己的代码修改例如:

NSString *file = @"youdatabase.db" 
    sqlite3 *db;  
    if(sqlite3_open([file UTF8String], &db) == SQLITE_OK) 
    { 
    NSString *req = @"SELECT * FROM totoTable"; 
    sqlite3_stmt *returnReq; 

    if(sqlite3_prepare(db, [req cStringUsingEncoding:NSUTF8StringEncoding], -1, &returnReq, NULL) == SQLITE_OK) 
    { 
     while (sqlite3_step(returnReq) == SQLITE_ROW) 
     { 
     //Printf first returned value 
     NSLog(@"%s", (char*)sqlite3_column_text(returnReq, 0)); 
     }  
    } 
    sqlite3_close(db); 
    } 

希望它会帮助你;-)

1

试试这个:NSLog(@"%s", sqlite3_errmsg(database));,看看你的查询是否有一些错误。

+0

没有错误......我编辑我的问题,你可以有一个更好的认识。 – user12345 2010-08-18 13:03:13

+0

正如我从你的代码可以看出,你的if语句不返回SQLITE_OK。 我使用sqlite3,我已经把它分成两个块,首先我做了准备,没有if,然后我使用'while(sqlite3_step(compiledStatement)== SQLITE_ROW)'循环遍历结果。试着看看它是否做出任何改变。 – Simon 2010-08-18 13:26:14

+0

@alis:你的NSLog在错误的地方。你想看看准备中的错误信息是什么。把它放在你的if的其他部分。 – JeremyP 2010-08-18 15:58:24

相关问题