【发布时间】:2011-03-26 02:47:17
【问题描述】:
所以我正在尝试在其中一个 iPhone 应用程序中使用 SQLite,并且我正在使用 sqlite3 库。我可以访问数据库,甚至可以进行查询;事实上,查询访问了确切的数据,但由于某种原因,我得到的字符串是一个长整数,而不是我正在寻找的字符串。这是数据库和代码:
文件名:Package.sql 表课 LessonID VARCHAR(64) 主键 |课程名称 VARCHAR(100) |输入日期(日期时间)|计时 VARCHAR (20) bfow02nso9xjdo40wksbfkekakoe29ak |学习历史 | 2010-08-05 16:24:35 | 0001还有 iPhone 代码
... -(NSString *)getRow:(NSString *)tablename 其中:(NSString *)column equals:(NSString *)value { const char *query = [[[[[[[@"SELECT * FROM `" stringByAppendingString:tablename] stringByAppendingString:@"` WHERE `"] stringByAppendingString:column] stringByAppendingString:@"` = '"] stringByAppendingString:value] stringByAppendingString :@"';"] cStringUsingEncoding:NSUTF8StringEncoding]; NSString *结果; if(sqlite3_open([dbpath UTF8String], &database) == SQLITE_OK) { sqlite3_stmt *compiledQuery; if(sqlite3_prepare_v2(database, query, -1, &compiledQuery, NULL) == SQLITE_OK) { 而(sqlite3_step(compiledQuery)== SQLITE_ROW){ NSString *str_temp = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledQuery, 2)]; 结果 = str_temp; } sqlite3_finalize(compiledQuery); } sqlite3_close(数据库); } 返回结果; } ...代码执行时:
CDatabase *db = [[CDatabase alloc]initWithDatabase:@"Package.sql"]; NSString *result = [db getRow:@"Lessons" 其中:@"Chrono" 等于:@"0001"];返回值 NSString *result 的值为“1,364,111”。为什么要这么做???应该是“学习历史”
【问题讨论】:
-
你应该试试 Gus Mueller 的 FMDatabase。我在我的项目中使用它,它做得很好。 (如果要在整个应用程序中使用 FMDatabase 对象,请记住保留它。)
标签: iphone objective-c database xcode sqlite