tags:

views:

51

answers:

1

hai guys,

small clarification is this possible to open two tables from one sqlite db in one iphone class??? but i can't open it please give me the solution i'm a beginner

here i tried coding

  - (void)viewDidLoad {
      [super viewDidLoad];
     list = [[NSMutableArray alloc] init];
       if ([material isEqualToString:@"Derlin"]) {

        [self sel1];
    }
    else if([material isEqualToString:@"Helers"]){

     [self sel2];    
   }
  }
  -(void)sel1 {

  [self createEditableCopyOfDatabaseIfNeeded];
   NSLog(@"numberOfRowsInSection");
   sqlite3_stmt *statement = nil;  // create a statement
   const char *sql = "Select * from material";  //create a query to display in the tableView
    if(sqlite3_open([writableDBPath UTF8String], &database) == SQLITE_OK) 
    {
     NSLog(@"sqlite3_open");
     if(sqlite3_prepare_v2(database, sql,-1, &statement, NULL)!=SQLITE_OK) 
        NSAssert1(0,@"Error Preparing Statement",sqlite3_errcode(database)); 

    else
    {
    while(sqlite3_step(statement) == SQLITE_ROW) // if the connection exists return the row of the query table
       {
          achemical = [NSString stringWithFormat:@"%s",(char *)sqlite3_column_text(statement,0)];
          arates = [NSString stringWithFormat:@"%s",(char *)sqlite3_column_text(statement,1)];
          anotes = [NSString stringWithFormat:@"%s",(char *)sqlite3_column_text(statement,2)];


          Chemical * chemic = [[Chemical alloc] initWithName:achemical rates:arates notes:anotes];

           [list addObject:chemic];
           [chemic release];
        }

      } 
   }
sqlite3_finalize(statement);

 }
  -(void)sel2 {
       [self createEditableCopyOfDatabaseIfNeeded];
      NSLog(@"numberOfRowsInSection"); 
       sqlite3_stmt *statement = nil;  // create a statement
      const char *sql = "Select * from material1";  //create a query to display in the tableView
      if(sqlite3_open([writableDBPath UTF8String], &database) == SQLITE_OK) 
     {
    NSLog(@"sqlite3_open");
    if(sqlite3_prepare_v2(database, sql,-1, &statement, NULL)!=SQLITE_OK) 
    NSAssert1(0,@"Error Preparing Statement",sqlite3_errcode(database)); 

    else
   {
          while(sqlite3_step(statement) == SQLITE_ROW) // if the connection exists return the row of the query table
      {
          achemical = [NSString stringWithFormat:@"%s",(char *)sqlite3_column_text(statement,0)];
          arates = [NSString stringWithFormat:@"%s",(char *)sqlite3_column_text(statement,1)];
          anotes = [NSString stringWithFormat:@"%s",(char *)sqlite3_column_text(statement,2)];
           Chemical * chemic = [[Chemical alloc] initWithName:achemical rates:arates notes:anotes];

           [list addObject:chemic];
           [chemic release];

     }

    }
  }
  sqlite3_finalize(statement);

 }

thanks in advance

+1  A: 

Sure, it's easy. Download FMDB, add it to your project, and add two FMResultSet objects in your class, one for each (query against each) table.

John Franklin
+1 anyone who uses the SQLite C api directly is a masochist.
Dave DeLong
Or writing a wrapper class. :)
John Franklin
@Dave DeLong - hai its not working as per your instruction i'm using SQLite
sri