【发布时间】:2016-03-26 00:50:51
【问题描述】:
我很想连接 sqlite 但不能。有人能帮我吗?我在这里根本看不到任何错误,我已经在谷歌和这里搜索了这个问题的高低,但我找不到任何方法来解决这个问题。
我正在关注教程here
请帮帮我,这个错误我快疯了。 =(
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
sqlite3 *contactDB; //declare pointer to database structurery
const char *dbPath = [databasePath UTF8String]; //convert NSString to UTF8String
//open database file. TRUE = success, FALSE = failed
if (sqlite3_open(dbPath, &contactDB)== SQLITE_OK){
NSLog(@"Opened");
sqlite3_stmt *statement;
NSString *querySQL = @"SELECT address, phone FROM contacts";
const char *query_stmt = [querySQL UTF8String];
if (sqlite3_prepare_v2(contactDB, query_stmt, 1, &statement, NULL) == SQLITE_OK) {
NSLog(@"Statement is OK");
}else{
NSLog(@"Statement FAILED");
}
}else{
NSLog(@"Failed");
}
日志只显示“Opened”然后是“Statement FAILED”
【问题讨论】:
-
1.为什么要使用常量 NSString,然后使用 -[UTF8String]?如果是常量查询,最好使用常量 C 字符串。 2. 为什么使用复杂的 sqlite_prepare_v2 方式?我怀疑你需要 那个 太多的自定义。有一个名为 sqlite3_exec() 的函数。 3. 我使用这个的例子:github.com/H2CO3/libsqlitemanager
-
下次发objective-c相关问题的时候记得加上objective-c标签。它告诉代码高亮显示代码实际上是 objc,而不是 sql / 其他语言。
-
将 NSLog 更改为
NSLog(@"Statement FAILED (%s)", sqlite3_errmsg()); -
你的 sqlite 数据库文件是否真的存在于
databasePath上?在使用数据库之前,您需要将 .sql 文件复制到应用程序的 CACHE 目录中。 -
准备操作的返回码是什么??
标签: iphone objective-c ios sqlite