2013-05-07 6 views
-3

Я хочу получить данные из моей таблицы базы данных, когда я ввожу имя звезды в текстовое поле, оно дает мне все цитаты этой звезды для случайных имен звезды.Как получить данные из таблицы базы данных sqlite в ios?

-(NSMutableArray *)searchAllQuotesOfStar 
{ 
    NSString *starName = [[NSString alloc] init]; 

    // NSString *name = [NSString stringWithFormat:@"starName"]; 

    NSMutableArray *starQuoteArray = [[NSMutableArray alloc] init]; 

    NSString *sqlStr = [NSString stringWithFormat:@"SELECT quote FROM quotes where star like '%%starName%%'"]; 

    //SELECT count(quote) from quotes where star like '%ac%' 

    sqlite3_stmt *ReturnStatement = (sqlite3_stmt *) [self getStatement:sqlStr]; 

    while (sqlite3_step(ReturnStatement)==SQLITE_ROW) 
    { 
     @try 
     { 
      searchStarQuoteDC *searchQoute = [[searchStarQuoteDC alloc] init]; 

      NSString *quote = [NSString stringWithUTF8String:(char*)sqlite3_column_text(ReturnStatement, 0)]; 

      searchQoute.quote = quote; 

      //    NSLog(@"%@", quote); 

      [starQuoteArray addObject:searchQoute]; 
     } 
     @catch (NSException *ept) { 

      NSLog(@"Exception in %s, Reason: %@", __PRETTY_FUNCTION__, [ept reason]); 
     } 
    } 

    return starQuoteArray; 
} 
+1

Что случилось, когда вы так пробовали? – Balu

+0

это дает мне данные, но только для одного имени я хочу дать мне данные для имени, которое я ищу для этого имени, введите в текстовое поле – HappyCoding

ответ

1

Добавьте этот код в databaseFlipsideViewController //databaseFlipsideViewController.m

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if ([segue.identifier isEqualToString:@"showDetail"]) { 

     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 

     detailController = segue.destinationViewController; 
     detailController.customerName = [keys objectAtIndex:indexPath.row]; 

     NSLog(@"%@", detailController.customerName); 
    } 
} 

И мой detailViewController код это:

@implementation detailViewController 

@synthesize customerLabel,code1Label,code2Label,dateLabel,customerName,code1Name; 

//file path to database 
-(NSString*)filePath { 
    NSArray*paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    return [[paths objectAtIndex:0]stringByAppendingPathComponent:@"bp.sql"]; 
} 

//open database 
-(void)openDB { 

    if(sqlite3_open([[self filePath]UTF8String], &db) !=SQLITE_OK) { 
     sqlite3_close(db); 
     NSAssert(0, @"Databese failed to open"); 
    } 
    else { 
     NSLog(@"database opened"); 
    } 
} 

- (IBAction)back:(id)sender 
{ 
    [self.delegate detailViewControllerDidFinish:self]; 
} 

- (void)viewDidLoad 
{ 
    [self openDB]; 

    NSString*sql = [NSString stringWithFormat:@"SELECT theDate, customer,code1,code2 FROM summary WHERE key=\"%@\"", customerName]; 

    const char *query_stmt = [sql UTF8String]; 

    sqlite3_stmt*statement; 

    if (sqlite3_prepare_v2(db, query_stmt, -1, &statement, nil)==SQLITE_OK) { 

     if (sqlite3_step(statement)==SQLITE_ROW) { 

      NSString *date = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)]; 
      dateLabel.text = date; 

      NSString *customer = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 1)]; 
      customerLabel.text = customer; 

      NSString *code1 = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 2)]; 
      code1Label.text = code1; 

      NSString *code2 = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement,3)]; 
      code2Label.text = code2; 

     } 
     sqlite3_finalize(statement); 

     [super viewDidLoad]; 
    } 
    sqlite3_close(db); 
} 
+0

еще у меня проблема – HappyCoding

+0

Я хочу добавить соответствующие данные слова id, но я не получаю это в другом взгляде. – Asheesh

1

Первый Получить данные из Sqlite Как это Ниже код.

-(void)getdataMT 
{ 
    sqlite3 * database; 

    NSString *[email protected]"MathsTricks.sqlite"; // Your database Name. 

    NSArray * documentpath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSAllDomainsMask, YES); 

    NSString * DocDir=[documentpath objectAtIndex:0]; 

    NSString * databasepath=[DocDir stringByAppendingPathComponent:databasename]; 

    if(sqlite3_open([databasepath UTF8String], &database) == SQLITE_OK) 
    { 
     const char *sqlStatement = "SELECT * FROM Mathematicstricks"; // Your Tablename 

     sqlite3_stmt *compiledStatement; 

     if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) 
     { 
      [name removeAllObjects]; 

      while(sqlite3_step(compiledStatement) == SQLITE_ROW) 
      { 
       [name addObject:[NSString stringWithFormat:@"%s",(char *) sqlite3_column_text(compiledStatement, 0)]]; 
      } 
     } 
     sqlite3_finalize(compiledStatement); 
    } 
    sqlite3_close(database); 
} 

И Хранится его в Tableview как этот

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return name.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 

    cell.textLabel.text=[NSString stringWithFormat:@"%@",[name objectAtIndex:indexPath.row]]; 

    return cell; 
} 

Попробуйте это.
Я надеюсь, что это действительно полезно.

+0

эта проблема не решена моей проблемой – HappyCoding

+0

, но вы поймете, как получить данные из sqlite и сохранить ее в tableview. – Jitendra

Смежные вопросы