0

这是我用来使用 sqlite 数据库中列的内容填充 UITableView 的方法的代码。但是,这在运行时没有给出错误,但在 UITableView 中仍然没有给出任何数据。如果有人可以提供帮助,将不胜感激。

- (void)viewDidLoad{
    [super viewDidLoad];
    self.title = @"Strings List";
    UITableViewCell *cell;
    NSString *docsDir;
    NSArray *dirPaths;
    sqlite3_stmt *statement;
    // Get the documents directory
    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    docsDir = [dirPaths objectAtIndex:0];

    // Build the path to the database file
    databasePath = [[NSString alloc]initWithString: [docsDir stringByAppendingPathComponent:@"strings.sqlite"]];

    NSFileManager *filemgr = [NSFileManager defaultManager];

    if ([filemgr fileExistsAtPath: databasePath ] == NO) 
    {
        const char *dbpath = [databasePath UTF8String];
        if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
        {
        NSString * query =
            @"SELECT string FROM strings";
            const char * stmt = [query UTF8String];
            if (sqlite3_prepare_v2(contactDB, stmt, -1,&statement, NULL)==SQLITE_OK){
                if (sqlite3_step(statement) == SQLITE_ROW)
                {
    NSString *string = [[NSString alloc]initWithUTF8String:(const char*)sqlite3_column_text(statement, 0)];
                    cell.textLabel.text = string;                }
            }
            else NSLog(@"Failed");
            sqlite3_finalize(statement);
       }
       sqlite3_close(contactDB);
    }

}
4

4 回答 4

0

当您拥有表格视图的所有委托方法时,您正在使用的那个非常复杂的方法就像把黄油涂在面包上一样。

从这个链接试试我的答案

让我知道它是否有效!!!!
干杯

于 2012-06-10T11:09:04.533 回答
0

您是否检查过问题是否与您的 tableview 或数据库有关?您是否能够从数据库中获取数据?检查您是否缺少任何在代码中连接 sqlite 的方法。

于 2012-06-10T14:55:35.150 回答
0

我建议您通读Table View Programming Guide

viewDidLoad您通常放入的大部分序列都放置在

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath; 
于 2012-06-10T11:04:17.387 回答
0

如果您使用模拟器进行测试,请删除之前的构建并再次安装应用程序。它从文档目录中获取 SQL 文件。所以请试试这个,让我知道。谢谢

于 2012-06-10T12:10:44.297 回答