Всем привет!
Собственно, создаю две базы, для каждой из них свой query. Делаю к одной из них "attach database ..."
Если обе базы не в памяти, то все ок, если же первую создаю как :memory: не могу перенести из нее данные,
при выполнении запроса тест ошибки: "no such table: table1".
C++ (Qt)
QSqlDatabase db1 = QSqlDatabase::addDatabase("QSQLITE", "test1");
//db1.setDatabaseName("test1.db3");
db1.setDatabaseName(":memory:");
if (!db1.open()) {
qDebug() << "Cannot open database:" << db1.lastError();
return false;
}
QSqlDatabase db2 = QSqlDatabase::addDatabase("QSQLITE", "test2");
db2.setDatabaseName("test2.db3"); //db.setDatabaseName(":memory:");
if (!db2.open()) {
qDebug() << "Cannot open database:" << db2.lastError();
return false;
}
QSqlQuery query1(db1);
QSqlQuery query2(db2);
QString str = "CREATE TABLE table1 ( "
"id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
"name VARCHAR(150) NOT NULL "
");";
if (!query1.exec(str))
{
qDebug() << "Unable to create table1" << query1.lastError().text();
}
else
{
QString strF = "INSERT INTO table1 (name) "
"VALUES('%1');";
if (!query1.exec(strF.arg("qqq")))
{
qDebug() << "Unable to insert data to table1" << query1.lastError().text();
}
if (!query1.exec(strF.arg("www")))
{
qDebug() << "Unable to insert data to table1" << query1.lastError().text();
}
}
str = "CREATE TABLE table2 ( "
"id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
"name VARCHAR(150) NOT NULL "
");";
if (!query2.exec(str))
{
qDebug() << "Unable to create table2" << query2.lastError().text();
}
str = "ATTACH DATABASE ':memory:' AS test1";
if (!query2.exec(str))
{
qDebug() << "Unable to attach database" << query2.lastError().text();
}
str = "INSERT INTO table2 (name) SELECT table1.name from table1";
if (!query2.exec(str))
{
qDebug() << "Unable to insert data to table2" << query2.lastError().text();
}
else
qDebug() << "ok";