iPhone sqlite3 - sqlite3_prepare_v2返回错误代码26

时间:2010-04-30 09:11:27

标签: iphone sqlite

我在我的iPhone App项目中使用sqlite3数据库文件在运行时读取。首先,出于开发目的,我使用Navicat for SQLite在桌面上创建了该文件。

使用此代码读取此文件有效:

NSString *strTest = [NSString stringWithString:@"select tbl_name from sqlite_master"]; 
const char *sql_test = [strTest UTF8String];
sqlite3_stmt *statement_test;
returnval = sqlite3_prepare_v2(database, sql_test, -1, &statement_test, NULL);
NSString *strerr = [NSString stringWithCString:sqlite3_errmsg(database)];
NSLog(@"\n\nTabellen in DB [%@] (Error:%d Description:%@)\n",path,returnval,strerr);
while (sqlite3_step(statement_test) == SQLITE_ROW) {
 NSString *table = [NSString stringWithUTF8String:(char   *)sqlite3_column_text(statement_test, 0)];
 NSLog(@"%@\n",table);
}
sqlite3_finalize(statement_test);

使用由合作伙伴公司使用PHP创建的文件,它不起作用。那家伙说,他刚刚使用PhP创建了它。不幸的是,我所知道的只是他的观点,但我会尝试更多地了解它,让你们能够指出我正确的方向。

使用公司的文件我收到错误代码26“文件已加密或不是数据库”

这种行为可能是什么原因。文件是加密的吗?合作伙伴公司告诉我,他们并没有根据他们的知识使用任何压缩。或者可能以其他方式发生在文件中的某些事情?可能是用错误版本的sqlite创建的?他们使用PHP5就像我所知道的那样。

也许有人可以在这里帮助我:)我知道它不是那么多信息,我会尝试提供更多。

1 个答案:

答案 0 :(得分:0)

问题实际上是合作伙伴团队创建了一个sqlite 2.x文件而不是版本3文件。这导致函数sqlite3_prepare_v2返回错误代码26。