0

tableViewsqlite を使用して2 つのテーブル データを別のテーブル データに結合するNSArrayと、Null 値を取得するNSDictionary方法と、オブジェクトとキーを設定する方法もわかります。以下は私のデータベースクラスです

+(NSMutableArray *)getData
{
    sqlite3 *dbobj;
    NSString *dbpath  =[DBClass connectdb];
    NSMutableArray *readArray=[[NSMutableArray alloc]init];
    if(sqlite3_open([dbpath UTF8String], &dbobj)==SQLITE_OK)
    {
        sqlite3_stmt *statement=nil;

        //**** NSString *string=@"SELECT name FROM emptable";
        NSString *string=@"SELECT EMP_ID, Age, DEPT FROM COMPANY INNER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID";
        ;
        const char *query=[string UTF8String];
        if(sqlite3_prepare_v2(dbobj, query, -1, &statement, NULL)==SQLITE_OK)
        {
            while (sqlite3_step(statement)==SQLITE_ROW)
            {
                NSMutableDictionary *readDic=[[NSMutableDictionary alloc] init];

                [readDic setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 2)] forKey:@"DEPT"];

                //[readDic setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 1)] forKey:@"Age"];

                [readArray addObject:readDic];
                // NSLog(@"%@",readDic);
            }
        }
        sqlite3_finalize(statement);
    }
    NSLog(@"%@",readArray);
    sqlite3_close(dbobj);
    return readArray;

}

下のものは私のものですJointviewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];

    array=[[NSMutableArray alloc]init];
    data=[[NSMutableArray alloc]init];

    array=[DBClass getData];
    for( NSDictionary *obj in array)
    {
        NSLog(@"%@",obj);

        [data addObject:[obj objectForKey:@"DEPT"]];
        //[data addObject:[obj objectForKey:@"Age"]];
    }
    NSLog(@"\n%d",[data count]);
    [Table reloadData];

}
4

1 に答える 1

0

columnname の前に tablename を指定する必要があります。つまり、この特定の列が属するテーブル。

この例を参照inner joinして、コードを関連付けてみてください。

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;
于 2013-07-11T13:03:26.783 に答える