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
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
SQLite的表看起来像这样
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)
为什么它将最后两个值插入错误的字段?
TIA
我对objectivec一无所知,但是你是否在其他地方声明了'addStmt'(它看起来很像它有某种全局的静态作用域)?如果是这样,你确定它没有被定义在别的地方吗? – 2012-03-07 02:48:27
static sqlite3_stmt * addStmt = nil;我已经修改了这个问题以显示完整的输出。这个插入的工作原理只是最后两个值进入了错误的字段 – JulianB 2012-03-07 02:52:35
并且您没有任何其他类似的插入例程也使用addStmt? – 2012-03-07 02:56:26