2010-04-30 48 views
0

我正在使用我的iPhone應用程序項目中的sqlite3數據庫文件在運行時讀取。首先,爲了開發目的,我使用Navicat for SQLite在桌面上創建了該文件。iPhone sqlite3 - sqlite3_prepare_v2返回錯誤代碼26

閱讀使用此代碼文件的工作原理:

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作爲fas。

也許有人可以幫助我在這裏:)我知道它沒有那麼多的信息,我會盡力提供更多。

回答

0

問題實際上是合作伙伴團隊創建了一個sqlite 2.x文件而不是版本3文件。這導致函數sqlite3_prepare_v2返回錯誤代碼26.

+0

如何解決你的問題?你能解釋更多嗎?我也有同樣的問題。 – Finder 2011-11-30 11:47:21

+0

Girija,我告訴他們創建一個sqlite3數據庫,而不是一個sqlite2,從那時起它工作。希望這可以幫助。我沒有嘗試任何其他方法,因爲這解決了我的問題。 – Nonlinearsound 2011-12-01 09:52:46