Ios 打开两个sqlite数据库并在iphone中执行查询
在这里,我想使用两个数据库执行查询,并将数据从database1的表复制到另一个database2。在这里,我可以打开一个数据库,但在打开另一个数据库时遇到了问题。提前感谢大家Ios 打开两个sqlite数据库并在iphone中执行查询,ios,iphone,sqlite,Ios,Iphone,Sqlite,在这里,我想使用两个数据库执行查询,并将数据从database1的表复制到另一个database2。在这里,我可以打开一个数据库,但在打开另一个数据库时遇到了问题。提前感谢大家 CurrentStatus *status = [CurrentStatus sharedCurrentStatus]; sqlite3 *database; sqlite3 *database1; sqlite3_stmt *statement; sqlite3_stmt *statem
CurrentStatus *status = [CurrentStatus sharedCurrentStatus];
sqlite3 *database;
sqlite3 *database1;
sqlite3_stmt *statement;
sqlite3_stmt *statement1;
NSString *dbPath = [status.applicationDocumentDirectory stringByAppendingPathComponent:@"database.sqlite"];
NSString *dbPath1 = [status.applicationDocumentDirectory stringByAppendingPathComponent:@"database1.sqlite"];
if ((sqlite3_open_v2([dbPath UTF8String], &database, SQLITE_OPEN_READWRITE , NULL) == SQLITE_OK) && (sqlite3_open_v2([dbPath1 UTF8String], &database1, SQLITE_OPEN_READWRITE , NULL) == SQLITE_OK)) {
NSString *sqlStr = [[NSString alloc] initWithFormat:@"select * from Login" ];
NSString *sql = [[NSString alloc] initWithString:sqlStr];
if ((sqlite3_prepare_v2(database, [sql UTF8String], -1, &statement, NULL) == SQLITE_OK)) {
NSLog(@"DB prepare_v2 Opening successfully");
if (sqlite3_step(statement) == SQLITE_ROW) {
}
else
{
}
sqlite3_finalize(statement);
NSLog(@"DB Opening successfully");
sqlite3_close(database);
}else
{
NSLog(@"else DB Opening successfully");
}
sqlite3_close(database);
}
从数据库中复制所需的数据1在NSMutableDictionary中添加每一行,然后将其添加到NSMutableArray。关闭并重置语句,然后打开数据库2从NSMutableArray复制数据,该数组将充当您的数据库
我希望它对你有用。尝试类似的方法来完成你的任务 首先,打开“DB1”数据库,然后执行以下语句:
ATTACH DATABASE "2ndDB.db" AS 2ndDB;
之后,您可以使用CREATE TABLE语法:
CREATE TABLE newTableInDB1 AS SELECT * FROM 2ndDB.oldTableInMyOtherDB;
这将把数据“复制”到新数据库中您需要附加数据库,然后将表从一个数据库复制到另一个数据库。您需要这样做:
NSString *attachSQL = [NSString stringWithFormat: @"ATTACH DATABASE \'%s\' AS %@", sourceDBPath,dbAlias];
if (sqlite3_exec(db, [attachSQL UTF8String], NULL, NULL, &errorMessage) != SQLITE_OK)
{
NSString *errorStr = [NSString stringWithFormat:@"The database could not be attached: %@",[NSString stringWithCString:errorMessage encoding:NSUTF8StringEncoding]];
return errorStr;
}
之后,您需要复制表,如:
NSString *queryString=[NSString stringWithFormat:@"CREATE TABLE %@ AS SELECT * FROM %@.%@;",newTableName,dbAlias,origTableName];
完成后,就有了数据库的新副本。关闭第一个副本,然后尝试打开第二个数据库。&同时重置语句…但我希望从database1复制数据并粘贴到database2表您需要使用附加数据库功能。对于附加数据库,是否有任何链接。。!!很好,是的,需要附加两个数据库以执行查询。
2ndDB
不是有效的标识符;您必须将其引用为“2ndDB”
或使用类似secondDB
@Indra的内容,因为第一个数据库(DB1)已经打开;只有第二个需要连接。请参阅。感谢您的回复,但我们可以直接打开两个数据库,现在我可以将数据从一个表复制到另一个表数据库2。它正在工作。