-1

我在 Xcode 中遇到了一个问题:我尝试了很多周将数据添加到 sqlite 数据库中,并且我在 Google 上搜索了很多结果,但没有一个可以提供完整而清晰的教程,我怀疑他们中的大多数都使用 .db 但不是 sqlite该sqlite无法插入或更新,只能读取数据,还是有其他方法可以做到这一点?

如果你们有的话,请在答案中附上带有教程的链接。谢谢

4

2 回答 2

1

我怀疑sqlite无法插入或更新,只能读取数据

当然你可以在 SQLite 中插入数据。这是一个和其他数据库一样的数据库,只是更轻一些,并且嵌入在与您的应用程序相同的进程中,而不是通常情况下的不同进程(这都意味着 SQLite 不能回答多个客户端,并且您除了您的应用程序之外,不必在计算机上安装任何东西)。

这是插入文档:http ://www.sqlite.org/lang_insert.html

这是许多其他教程中的一个:http ://www.techotopia.com/index.php/An_Example_SQLite_based_iPhone_Application

(事实上​​我只是在谷歌上搜索“sqlite xcode insert”,我以前不知道这个教程)

于 2012-09-04T09:06:21.973 回答
0

Sunny 已经两天了,我一直在努力找出如何在 iOS 上将数据插入到 sqlite。您应该做的第一件事是告诉 SQLite 将数据保存在哪里。默认情况下,如果您在手机上运行您的应用程序,它会将 sqlite 文件放在只读根目录中。要解决它,您应该这样做:

-(NSString *)GetDocumentDirectory{
    fileMgr = [NSFileManager defaultManager];
    homeDir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    return homeDir;
}

当你想插入数据时,哪个 fileMgr 是NSFileManager,接下来是 homeDir NSString,首先你应该给它你的 SQLite 根,这是第一行,它检查是否sqlite3_open并且将开始插入你的数据:

-(void)InsertRecords:(NSMutableString *)myData{
NSString *dbPath = [self.GetDocumentDirectory stringByAppendingPathComponent:@"YOUR SQLITE FILE NAME.sqlite"];
    const char *dbpath = [dbPath UTF8String];
    sqlite3 *contactDB;
    sqlite3_stmt *statement;

    if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
    {
        NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO tableName (tableColumn) VALUES (\"%@\")", myData];
const char *insert_stmt = [insertSQL UTF8String];

        sqlite3_prepare_v2(contactDB, insert_stmt, -1, &statement, NULL);
        if (sqlite3_step(statement) == SQLITE_DONE)
        {
            sqlite3_bind_text(statement, 1, [myData UTF8String], -1, SQLITE_TRANSIENT);
} 
else {
            NSLog(@"error");
}
        sqlite3_finalize(statement);
        sqlite3_close(contactDB);
    }
}

希望能帮助到你 :)

于 2012-10-28T16:53:58.207 回答