動的に列を持つ sqlite3 テーブルを作成する必要があります。実際には NSMutableArry に格納されている列名です。NSMutableArrya 値からテーブルを作成したいと考えています。
3 に答える
5
これを試して :
- (void)viewDidLoad
{
NSString *idField = @"ID INTEGER PRIMARY KEY AUTOINCREMENT";
NSString *nameField = @"NAME TEXT";
NSString *ageField = @"AGE INTEGER";
// Make the field array using different attributes in different cases
NSArray *fieldArray = [NSArray arrayWithObjects:idField,nameField,ageField, nil];
[self createTable:fieldArray];
}
- (void)createTable:(NSArray *)fieldArray
{
// Put all the code for create table and just change the query as given below
NSString *queryString = [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS CONTACTS (%@)",[fieldArray componentsJoinedByString:@","]];
const char *sql_stmt = [queryString UTF8String];
}
于 2012-12-11T12:26:45.463 に答える
2
そのような方法でそれを行うことができます.配列のデータを正しい方法で解析するだけです.
-(BOOL)createNewTable
{
NSArray *array=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *filePath=[array objectAtIndex:0];
filePath =[filePath stringByAppendingPathComponent:@"yourdatabase.db"];
NSFileManager *manager=[NSFileManager defaultManager];
BOOL success = NO;
if ([manager fileExistsAtPath:filePath])
{
success =YES;
}
if (!success)
{
NSString *path2=[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"yourdatabase.db"];
success =[manager copyItemAtPath:path2 toPath:filePath error:nil];
}
createStmt = nil;
NSString *tableName=@"SecondTable";
if (sqlite3_open([filePath UTF8String], &database) == SQLITE_OK) {
if (createStmt == nil) {
NSString *query=[NSString stringWithFormat:@"create table %@(rollNo integer, name text)",tableName];
if (sqlite3_prepare_v2(database, [query UTF8String], -1, &createStmt, NULL) != SQLITE_OK) {
return NO;
}
sqlite3_exec(database, [query UTF8String], NULL, NULL, NULL);
return YES;
}
}
于 2012-12-11T12:23:46.087 に答える
1
テーブルを動的に作成するには、次のような create クエリを使用します。
NSString *query=[NSString stringWithFormat:@"create table '%@'('%@' integer, '%@' text)",yourTableName,[yourArray objectAtIndex:0],[yourArray objectAtIndex:1]];
于 2012-12-11T12:26:01.000 に答える