2012-03-07 9 views
0

私は正しい値を出力し、このsqliteのインサートが

- (void)insertBlogStory:(NSString *)storyTitle link:(NSString *)link storyDescription:(NSString *)storyDescription storyHTML:(NSString *)storyHTML pubDate:(NSString *)pubDate blog:(NSString *)blog { 

    NSLog(@"storyTitle %@",storyTitle); 
    NSLog(@"link %@",link); 
    NSLog(@"storyDescription %@",storyDescription); 
    NSLog(@"storyHTML %@",storyHTML); 
    NSLog(@"pubDate %@",pubDate); 
    NSLog(@"blog %@",blog); 

    if(addStmt == nil) { 

     const char *sql = "insert into contents (storyTitle, link, storyDescription, storyHTML, pubDate, blog, read) 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, [storyTitle UTF8String], -1, SQLITE_TRANSIENT); 
    sqlite3_bind_text(addStmt, 2, [link UTF8String], -1, SQLITE_TRANSIENT); 
    sqlite3_bind_text(addStmt, 3, [storyDescription UTF8String], -1, SQLITE_TRANSIENT); 
    sqlite3_bind_text(addStmt, 4, [storyHTML UTF8String], -1, SQLITE_TRANSIENT); 
    sqlite3_bind_text(addStmt, 5, [pubDate UTF8String], -1, SQLITE_TRANSIENT); 
    sqlite3_bind_text(addStmt, 6, [blog UTF8String], -1, SQLITE_TRANSIENT); 
    sqlite3_bind_int(addStmt, 7, 0); 

    if(SQLITE_DONE != sqlite3_step(addStmt)) 
     NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(_database)); 

    sqlite3_reset(addStmt); 


} 

を挿入しようとしているがmethiod sqliteの表は、この

のように見えます

storyTitle -> Converged Security 
link -> http://...converged-security.html 
storyDescription -> Cyber-crime is not new....etc 
storyHTML -> <p>Cyber-crime is not new....etc 
pubDate -> Thu, 01 Sep 2011 10:52:57 +0100 
blog -> Business continuity 

に送信されます

TABLE "contents" (
"id" INTEGER PRIMARY KEY, 
"storyTitle" TEXT, 
"link" TEXT, 
"storyDescription" TEXT, 
"storyHTML" TEXT, 
"pubDate" DATETIME, 
"blog" TEXT, 
"read" INTEGER, 
"storyVideo" TEXT, 
"storyVideoThumb" TEXT, 
"storyAudio" TEXT, 
"issueA" TEXT, 
"industryA" TEXT, 
"serviceA" TEXT, 
"contactName" TEXT, 
"contactPhone" TEXT, 
"contactAddress" TEXT, 
"contactPhrase" TEXT, 
"contactPhraseEmail" TEXT, 
"contactPhraseName" TEXT 
); 

これは挿入されたものです

"storyTitle" correct string 
"link" correct string 
"storyDescription" correct string 
"storyHTML" correct string 
"pubDate" correct string 
"blog" is always NULL 
"read" is always NULL 


"storyVideo" gets the blog string (Business continuity) 
"storyVideoThumb" gets the read value (0) 

間違ったフィールドに最後の2つの値を挿入するのはなぜですか?

名声と栄光(およびポイント)のためのTIA

+0

私はobjectivecについて何も知りませんが、あなたはどこか別の場所に 'addStmt'を宣言していますか?もしそうなら、他の場所でも定義されていないと確信していますか? –

+0

静的sqlite3_stmt * addStmt = nil;私は完全な出力を表示するために質問を修正しました。この挿入は、ちょうど最後の2つの値が間違ったフィールド – JulianB

+0

に入り、addStmtを使用する他の同様の挿入ルーチンを持っていないことになりますか? –

答えて

0

addStmtは、静的および/またはグローバルになりそうです。私はあなたがわずかに異なる挿入ステートメントで他の場所で同じ変数名を使用していると思います。

関連する問題