索引sqlite数据库的2列

时间:2013-05-30 18:25:04

标签: ios sqlite indexing

我以前有这条线可以正常工作:

"CREATE TABLE IF NOT EXISTS Paths (ID INTEGER PRIMARY KEY AUTOINCREMENT, START INTEGER, END INTEGER, DISTANCE REAL, NODES TEXT)";

但是没有索引。我想索引开始和结束。 (它来自路径查找器以获取路线的节点)。

我现在尝试的是:

            const char *sql_stmt =
        "CREATE TABLE IF NOT EXISTS Paths (ID INTEGER PRIMARY KEY AUTOINCREMENT, START INTEGER, END INTEGER, DISTANCE REAL, NODES TEXT) CREATE INDEX `START_INDEX` ON `Paths` (`START` ASC) CREATE INDEX `END_INDEX` ON `Paths` (`END` ASC)";

但这失败了。

  

原因:靠近“CREATE”:语法错误

我对mysql有一点经验,在sqlite我没有。这是一个学校项目,之后我可能永远不会再触摸sqlite。所以如果有人可以帮助一点,那就太好了。我的方法的其余部分可能不是最干净的,但我并不真正关心。我只需要创建一次数据库并将其复制到另一个项目以在那里使用它。 如果我有更多的时间和天赋来获取这些东西,我会花更多的时间在它上面,但我根本无法解决问题。如果没有人可以帮助它没问题,那就太好了。

- (void) createDataBase {

    NSString *docsDir;
    NSArray *dirPaths;

    // Get the documents directory
    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    docsDir = dirPaths[0];

    // Build the path to the database file
    _databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent:@"paths.db"]];

    NSLog(@"databasePath: %@", _databasePath);

    //NSFileManager *filemgr = [NSFileManager defaultManager];

    //if ([filemgr fileExistsAtPath: _databasePath] == NO) {
    if (YES == YES) {

        const char *dbpath = [_databasePath UTF8String];

        if(sqlite3_open(dbpath, &_pathDB) == SQLITE_OK) {
            char *errMsg;
            const char *sql_stmt =
            "CREATE TABLE IF NOT EXISTS Paths (ID INTEGER PRIMARY KEY AUTOINCREMENT, START INTEGER, END INTEGER, DISTANCE REAL, NODES TEXT) CREATE INDEX `START_INDEX` ON `Paths` (`START` ASC) CREATE INDEX `END_INDEX` ON `Paths` (`END` ASC)";


            if (sqlite3_exec(_pathDB, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK)
            {
                //_status.text = @"Failed to create table";
                NSLog(@"Failed to create table");
                NSLog(@"reason: %s", sqlite3_errmsg(_pathDB));

            }
            sqlite3_close(_pathDB);
        } else {
            // _status.text = @"Failed to open/create database";
            NSLog(@"Failed to open/create database");
        }
    }

}

0 个答案:

没有答案