2011-09-05 80 views
4

我想从我的数据库中的数据,但我没有得到解决掉 我尝试这样迷糊中sqlite的select语句

- (空)信息

{ 
    //[self createEditableCopyOfDatabaseIfNeeded]; 
    NSString *filePath = [self getWritableDBPath]; 

    sqlite3 *database; 
    if(sqlite3_open([filePath UTF8String], &database) == SQLITE_OK) 
    { 
     NSString *qu = @"Select Name FROM empl where SyncStatus ='1'"; 
     sqlite3_stmt *compiledStatement; 
     if(sqlite3_prepare_v2(database, [qu UTF8String], -1, &compiledStatement, NULL) == SQLITE_OK) 
     { 
      char *firstColumn = (char *)sqlite3_column_text(compiledStatement, 0); 

      if (firstColumn==nil) 
      { 
       NSString *name= [[NSString stringWithUTF8String:firstColumn]autorelease]; 
       NSLog(@"%c",name); 

      } 
      if(sqlite3_step(compiledStatement) != SQLITE_ROW) 
      { 

       UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"UIAlertView" message:@"User is not valid" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
       [alert show]; 
       [alert release]; 
       alert = nil; 
      } 
     } 
     sqlite3_finalize(compiledStatement); 
    } 
    sqlite3_close(database); 
} 

得到它崩溃, 这让我错误的原因: '* + [NSString的stringWithUTF8String:]:NULL CSTRING' 在第一掷 *调用堆栈:

回答

3

这样使用

if(sqlite3_step(compiledStatement) == SQLITE_ROW) 
      { 
       char *firstColumn = (char *)sqlite3_column_text(compiledStatement, 0); 
       NSString *name= [[NSString alloc]initWithUTF8String:firstColumn]; 


      } 

我希望这将有助于你试试这个

+0

谢谢它帮助我&amresh也说我一样 – Harish

3

我觉得firstColumn是空的,我使程序崩溃。您尝试检查数据库中的数据为空。

+0

我的数据库是不是null我火选择JourneyName FROM UserJourney其中SYNCSTATUS =“1”的sqlite的浏览器,它给我的数据 – Harish

3

这实际上是显而易见的,因为你正在试图获取这是NULL 尝试此代码对你的代码检查NULL数据:

if (sqlite3_column_text(compiledStatement, 0)!= nil) 

if (sqlite3_column_text(compiledStatement, 0)!= nil) 
    char *firstColumn = (char *)sqlite3_column_text(compiledStatement, 0); 
else 
    char *firstColumn = @""; 

NSString *name= [[NSString stringWithUTF8String:firstColumn]autorelease]; 
NSLog(@"%c",name); 

试试这个... 希望它有帮助....

+0

你的回答也接近了我的问题,但感谢你的帮助 – Harish

0

我认为有2个问题与这段代码。

  • 正如早已指出你检查等于零而不是 从零不同。
  • 要订购的SQL函数应该是:

    1. sqlite3_open
    2. sqlite3_prepare_v2
    3. sqlite3_step
    4. sqlite3_column_text
您也可以了解在这个命令的语句: http://www.iosdevelopment.be/sqlite-tutorial/