IPhone开发 - 无法使用SQLite [英] IPhone Development - Failed to use SQLite
问题描述
我正在尝试在我构建的数据库中进行简单查询,但是无法正常工作。
数据库的路径看起来很奇怪,我不知道它是否正确。我在资源文件夹中添加了数据库。
I'm trying to do a simply query in a database that I built, but is not working. The Path of the database looks very strange, I don't know if it is correct. I added the database in the "Resource" folder.
代码:
-(void)getInitialDataToDisplay:(NSString *)dbPath {
int result;
SQLiteTestAppDelegate *appDelegate = (SQLiteTestAppDelegate *)[[UIApplication sharedApplication] delegate];
result = sqlite3_open([dbPath UTF8String], &database) ;
if (result == SQLITE_OK) {
const char *query = "select first_name from tbl_student";
sqlite3_stmt *selectstmt;
result = sqlite3_prepare_v2(database, query, -1, &selectstmt, nil);
if(result == SQLITE_OK) {
NSLog(@"Query executed with success!!!!");
}
else {
NSLog(@"Error on execute query! Error = %i",result);
}
}
else {
sqlite3_close(database);
NSLog(@"Error on connect to database! Error = %i",result);
}
}
-(NSString *)getDBPath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:@"FirstDataBase.sqlite"];
}
输出:
**2010-08-20 08:55:15.810 SQLiteTest[263:207] Begin: connect to database
2010-08-20 08:55:15.843 SQLiteTest[263:207] Database copied with success! Location: /Users/claudio/Library/Application Support/iPhone Simulator/4.0/Applications/358B8748-7A2A-4FD4-943E-31B801279CA1/Documents/FirstDataBase.sqlite
2010-08-20 08:55:15.844 SQLiteTest[263:207] Error on execute query! Error = 1**
来自sqlite.h
#define SQLITE_ERROR 1 /* SQL error or missing database */
这意味着我的数据库没有被正确复制?我该怎么办?
It means that my database is not being copied correctly? What should I do?
其他说明:
1-我试图将'query'用作 const char *
;
2-我在sqlite3.h中读到 sqlite3_open(...)
永远不会返回错误,除非iPhone内存不足;
3-我检查了数据库的名称很多时间,它正好是FirstDataBase.sqlite。
Other notes:
1- I tryed to use 'query' as const char* too
;
2- I read in "sqlite3.h" that sqlite3_open(...)
never will return an error, unless the iPhone run out of memory;
3- I checked the name of my database lots of time, it is exactly "FirstDataBase.sqlite".
提前致谢,
Claudio
Thanks in advance,
Claudio
推荐答案
你的意思是 const char *
,而不是 const NSString *
(此外, const NSString *
几乎总是错误的;你的意思是 NSString * const
如果有的话。
You mean const char *
, not const NSString *
(besides, const NSString *
is pretty much always wrong; you mean NSString * const
if anything).
还可以考虑使用 NSLog(@%s,sqlite3_errmsg(数据库))
,这通常会打印出更有用的错误消息。
Also consider using NSLog(@"%s", sqlite3_errmsg(database))
, which usually prints out a more helpful error message.
这篇关于IPhone开发 - 无法使用SQLite的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!