执行RC当= sqlite3_open( “test.db的”,&DB)我得到 “无法打开数据库文件”; ??
sqlite3 *db; // sqlite3 db struct
char *zErrMsg = 0;
int rc;
// Open the test.db file
rc = sqlite3_open("test.db", &db); // <-- creates DB if not found ??
if( rc ){
// failed
fprintf(stderr, "ERROR: Can't open database: %s\n", sqlite3_errmsg(db));
}
sqlite3_open
如果数据库不存在返回错误。 要创建数据库,如果它不存在,使用sqlite3_open_v2
与SQLITE_OPEN_CREATE
和SQLITE_OPEN_READWRITE
标志( 两者都需要 ):
rc = sqlite3_open_v2(/* DB Path */, &db, SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE, NULL);
参考
要查找/* DB PATH */
时,需要立足关名的文件目录:
- (NSString *) applicationDocumentsDirectory
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return basePath;
}
您可以使用此便捷方法的文件路径和数据库名称相结合:
NSString *documents = [self applicationDocumentsDirectory];
NSString *dbPath = [documents stringByAppendingPathComponent:@"test.db"];
rc = sqlite3_open_v2([dbPath UTF8String], &db, SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE, NULL);
#define SQLITE_OK 0
sqlite3 *db;
char *zErrMsg=0;
if(sqlite3_open("demo.db", &db) == SQLITE_OK)
{
if(sqlite3_exec(db, "select * from Users", callback, 0, &zErrMsg) == SQLITE_OK)
msgbox1("success");
sqlite3_close(db);
}
else
msgbox1("failure");
这里是我使用的样本代码;