Sqlite3在iPhone上出现“没有这样的表”错误

时间:2009-03-23 10:16:58

标签: iphone sqlite

我创建了一个sqlite3数据库,创建了表并插入了一些数据。我可以使用终端应用程序使用select查询检索。

但是当我将这个数据库添加到我的iPhone应用程序资源并尝试以编程方式访问数据时,我得到错误“没有这样的表:表名”

为什么会这样?

3 个答案:

答案 0 :(得分:8)

如果数据库路径不存在,sqlite3_open()会为您创建一个空数据库。因此,您提供的路径可能无法引导您到达目标文件。使用空数据库,你会得到“没有这样的表”。

答案 1 :(得分:0)

iPhone可能无法访问数据库文件。尝试从iPhone应用程序本身创建数据库。

NSArray *paths = NSSearchPathForDirectoriesInDomains(
                    NSDocumentDirectory, NSUserDomainMask, YES
                 );
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [
      documentsDirectory stringByAppendingPathComponent:@"yourdbname.sql"
];
// Open the database. The database was prepared outside the application.
if (sqlite3_open([path UTF8String], &db_handle) != SQLITE_OK) {
    // Even though the open failed, 
    // call close to properly clean up resources.
    sqlite3_close(db_handle);
    NSAssert1(0, 
         @"Failed to open database with message '%s'.", 
         sqlite3_errmsg(db_handle)
    );
}

然后再次执行您的查询。此外,如果您在数据库访问代码的每一步检查潜在错误,它会有所帮助。

答案 2 :(得分:0)

我和sqlite3X C ++包装器有同样的错误。 我在我的IE插件中使用这个库。 问题是不可用.sqlite基础。 IE(非插件)的当前目录是“C:\ Documents and Settings \ UserName \ desktop \”。 当我把我的基地放在这个位置时 - 问题就解决了。