【问题标题】:How to display multiple rows and columns from database into tableView?如何将数据库中的多行和多列显示到 tableView 中?
【发布时间】:2014-10-07 23:40:42
【问题描述】:

我正在尝试将数据库中的行和列显示到 tableview 中。我的方法是:首先从数据库中获取数据,然后将 SQL 语句分配给如下变量:

- (NSMutableDictionary *)arrayOfInquiries
{
    const char *dbpath = [databasePath UTF8String];
    if (sqlite3_open(dbpath, &database) == SQLITE_OK)
    {
        NSString *querySQL = @"select * from inquiry_tb";
        const char *query_stmt = [querySQL UTF8String];
        if (sqlite3_prepare_v2(database,
                               query_stmt, -1, &statement, NULL) == SQLITE_OK)
        {
            while (sqlite3_step(statement) == SQLITE_ROW)
            {
                Inquiry *voucher = [[Inquiry alloc]init];

                NSNumber *id = [[NSNumber alloc] initWithInt:sqlite3_column_int(statement, 1)];
                NSString *name = [[NSString alloc] initWithUTF8String:
                              (const char *) sqlite3_column_text(statement, 2)];
                NSString *date = [[NSString alloc] initWithUTF8String:
                                (const char *) sqlite3_column_text(statement, 3)];
                NSString *branch = [[NSString alloc] initWithUTF8String:
                                (const char *) sqlite3_column_text(statement, 4)];

                NSMutableDictionary *inquiries = [NSMutableDictionary dictionaryWithObjectAndKeys:id,@"id",name,@"name",date,@"date",branch,@"branch",nil];
            sqlite3_reset(statement);
            return inquiries;
            }
         }
      }
    return nil;
}

我打算返回主视图控制器。

我的问题是:如何将它返回到主视图控制器。这样我就可以将它用于 tableViewCell 中的标签。

我的方法对吗?还是有更好的方法?

【问题讨论】:

  • 我不确定 SQLite 数据库方法是否正确。你可以实现一个委托,你的 MainViewController 也可以实现它。通过此 API,您可以将查询返回给 MainViewCONtrollerDelegate。但是使用这种方法,您的 MainViewController 应该已经在内存中以接收此委托方法。
  • 还有一个建议。如果你使用CoreData,它有NSFetchedResultsViewController,它将以tableview的方式显示内容,并且数据库中的所有编辑操作都将与你的tableview同步。

标签: ios objective-c uitableview sqlite


【解决方案1】:

@teach 是的,你可以做到。

在你的主视图控制器(.H)中创建 NSMutableArray。假设你有

NSMutableArray *id1,*name1,*date1,*branch1;

现在您可以像这样将它添加到您的 sql 变量中

NSString *querySQL = @"select *yourcolumnnames from inquiry_tb where=?";

NSNumber *id = [[NSNumber alloc] initWithInt:sqlite3_column_int(statement, 0)];

   [id1 addObject:id];

            NSString *name = [[NSString alloc] initWithUTF8String:
                          (const char *) sqlite3_column_text(statement, 1)];
       [name1 addObject:name];

            NSString *date = [[NSString alloc] initWithUTF8String:
                            (const char *) sqlite3_column_text(statement, 2)];
       [date1 addObject:date];

            NSString *branch = [[NSString alloc] initWithUTF8String:
                            (const char *) sqlite3_column_text(statement,3 )];

             [branch1 addObject:branch];

之后你可以添加你的 NSMutableArray *id1,*name1,*date1,*branch1;在你的 UITableViewcell 中显示 NSMutableArray。

在属性必须赋值之前(.H)

@property (strong, nonatomic)  UILabel *id1label;

现在在 (.m)

id1label=[[UILabel alloc]init];
id1label.frame=CGRectMake(115, 5, 400, 50);    
id1label.font=[UIFont fontWithName: @"Neue Helvetica" size:14.0];
id1label.lineBreakMode = NSLineBreakByWordWrapping;
id1label.numberOfLines=0;
id1label.textColor=[UIColor blueColor];
NSArray *comment=[ youranotherNSMutableArray objectAtIndex:indexPath.section];
id1label.text=[comment objectAtIndex:indexPath.row];
[cell.contentView addSubview:id1label];

【讨论】:

    猜你喜欢
    • 2018-08-13
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2021-06-22
    相关资源
    最近更新 更多