2011-01-10 17 views
0

Sir、 私はsqliteデータベースを使ってデータを動的に保存しています。私は端末でデータベースを作成してプロジェクトのresources.Inデータベースに追加しました。問題は、私はアプリを実行し、テキストフィールドに値を挿入しようとすると、アプリケーションは、このsqliteに新しいcategory.Imという名前のテーブルが存在しないことを例外を与えて終了し、本当にこの例外が発生する理由はわかりません。sqliteデータベースを使用して値を挿入しようとしています

..私はワットがhappening.iは以下のコードを使用している知っている

- (void) addCategory{ 
    if(addStmt == nil) { 
     const char *sql = "insert into Category(Categoryname, Fromquant,Toquant,Units) Values(?, ?, ?, ?)"; 
     if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) != SQLITE_OK) 
      NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database)); 
    } 

    sqlite3_bind_text(addStmt, 1, [Categoryname UTF8String], -1, SQLITE_TRANSIENT); 
    sqlite3_bind_double(addStmt, 2, [Fromquant doubleValue]); 
    sqlite3_bind_double(addStmt, 3, [Toquant doubleValue]); 
    sqlite3_bind_text(addStmt, 4, [Units UTF8String], -1, SQLITE_TRANSIENT); 

    if(SQLITE_DONE != sqlite3_step(addStmt)) 
     NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database)); 
    else 
     //SQLite provides a method to get the last primary key inserted by using sqlite3_last_insert_rowid 
     CategoryID = sqlite3_last_insert_rowid(database); 

    //Reset the add statement. 
    sqlite3_reset(addStmt); 
} 

し、データベース内のテーブルは、このようなものですしてみましょう

CREATE TABLE "Category"("CategoryID",INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"Categoryname"VARCHAR,"Fromquant"REAL,"Toquant"REAL,"Units"VARCHAR); 
+0

正しいデータベースでクエリを実行していますか? –

+1

誰かが同じデータベース上の – Aditya

+0

コードの可視性を高めるために質問を編集できますか? – user525246

答えて

4

私はursのテーブルの作成コマンドが間違っていると思います。最初のフィールドのデータ型については言及していません。最初のフィールドの後にコンマを削除するだけです。次のコードを使用してください:

CREATE TABLE "Category"("CategoryID"INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"Categoryname"VARCHAR,"Fromquant"REAL,"Toquant"REAL,"Units"VARCHAR); 

私はそう思います。お試しください

関連する問題