2012-09-04 106 views
-1

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

如果您有任何问题,请在答案中附上教程链接。谢谢

回答

1

我怀疑SQLite是无法插入或更新,只可以读取数据

当然你也可以SQLite中插入数据。这是一个与其他应用程序一样的数据库,只是稍微轻松一点,并且与应用程序嵌入在同一个进程中,而不是像通常情况下那样嵌入一个不同的进程(这意味着SQLite无法应答多个客户端,而且您除了应用程序之外,不需要在计算机上安装任何东西)。

这里的INSERT文档:http://www.sqlite.org/lang_insert.html

这里还有很多其他中教程:http://www.techotopia.com/index.php/An_Example_SQLite_based_iPhone_Application

(其实我只是用Google搜索“sqlite的Xcode中插入”,我以前不知道这个教程)

+0

我发现,真正与插入和更新工作教程相当数量,且大多都在.db的格式,当我把我的编码它与.sqlite工作,它只是不工作..我现在对iPhone编程非常沮丧... Android给我更好的编程经验,我比较它... – Sunny

+0

也许有一个混淆:与SQLite引擎,你可以打开“.db”文件。这只是文件的名称。 –

+0

@Sunny可能你的问题是你试图写入包中的只读数据库。将数据库复制到您的应用程序的文档目录并对其执行插入/更新操作。 –

0

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

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

这fileMgr是NSFileManager和HOMEDIR是NSString未来,当你想插入YOUT数据,第一ü应该给乌尔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); 
    } 
} 

希望它能帮助:)

相关问题