-1

SQLite データベースの使用方法を学んでいますが、データをテーブルに保存し、後でそれを取得して新しいテーブルに保存する際に問題があります。

最初のテーブル (FoodType) を次のように作成しました。

CREATE TABLE FoodType(
    type_id integer,
    Category_id integer,
    Type text,
    Quantity text,
    NumberCalories text
)

ビュー コントローラーでこのテーブルからデータを取得し、そのデータをラベルに表示します。今、私はそのように作成した別のテーブル (Order) にデータを保存したいと思います:

CREATE TABLE Order (
    id integer NOT NULL PRIMARY KEY AUTOINCREMENT,
    type-meal text,
    Quantity text,
    NumCal text
)

これは、2 番目のテーブルにデータを挿入するために使用しようとしているコードです。

NSString *insertSQL = [NSString stringWithFormat: 
    @"INSERT INTO Order (type-meal,Quantity,NumCal) VALUES (\"%@\",\%@\",\"%@\")",_typeLbl.text,_Quantity.text,_Number.text];

ありがとう

4

4 に答える 4

1

"Order" は SQL の予約語です。テーブルに別の名前を付けてみてください。

于 2012-11-13T13:30:34.947 に答える
1

「INSERT INTO」の代わりに「REPLACE INTO」プロパティを使用してみてください

于 2012-11-13T13:55:04.297 に答える
0

-引用符なしで識別子に文字を使用することはできません。

type_mealまたはを試してください"type-meal"

于 2012-11-13T14:42:34.007 に答える
0

これは、カテゴリのタイプを持つ 2 番目の tableView にデータを保存するために使用するすべてのコードです。データベースには何も保存されませんが、type_id=4 と判断すると、最初のカテゴリの 4 番目のタイプのみが取得されます:
- (IBAction )SaveData:(id)sender { @try { if (sqlite3_open([[AppDelegate getDBPath] UTF8String], &database)== SQLITE_OK) {

          NSString *statement= [NSString stringWithFormat: @"INSERT INTO SavedD (type_meal,Quantity,NumCal) SELECT Type,Quantity,NumberCalories FROM FoodType Where type_id=?" ];
         const char *sqlstatement = [statement UTF8String];

                if (sqlite3_prepare_v2(database, sqlstatement, -1, &compiledStatement, NULL)== SQLITE_OK)
                {
                    NSLog(@"Data inserted Successfully");
                    //  UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"OK" message:@"Record added" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
                    // [alert show];

                    sqlite3_bind_text(compiledStatement, 1, [mealType UTF8String], -1, SQLITE_TRANSIENT);

                    sqlite3_bind_text(compiledStatement, 2, [Quantit UTF8String], -1, SQLITE_TRANSIENT);
                    sqlite3_bind_text(compiledStatement, 3, [NumofCal UTF8String], -1, SQLITE_TRANSIENT);

                    NSLog(@"%@",mealType);
                    //   NSLog(@"%@",PersonId);
                    NSLog(@"%@",Quantit);
                    NSLog(@"%@",NumofCal);

                    int iResult = sqlite3_step(compiledStatement);
                    NSLog(@"%d",iResult);
                    if (SQLITE_DONE!=iResult )
                        NSAssert1(0,@"Error when inserting  %s",sqlite3_errmsg(database));

                }
                else {

                    UIAlertView *AlertOK = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Data not inserted22" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];

                    [AlertOK show];

                }

                sqlite3_finalize(compiledStatement);

            }
            sqlite3_close(database);
        }



        @catch (NSException * e) {
            NSLog(@"The Record already inserted");
        }

}

データが正常に挿入されたことを確認した後..しかし、「mealType」、「Quantit」、および「NumofCal」の値は null です..

于 2012-11-14T08:40:36.593 に答える