Thanks a lot wysota!
Now it's RUN! 
This is the definitive code 
void myThread1::createDB(){
nomeDB
=QString("R%2_Prova%1.s3db").
arg(idProva
).
arg(nrampa
);
db.setDatabaseName(nomeDB);
if (!db.open()){
msg.setText(db.lastError().text());
msg.show();
}else{
db.exec("create table test (campo int)");
}
}
void myThread1
::execCmd(QString cmd
){
}
void myThread1::zipDB(){
zipName=nomeDB;
archive(zipName.replace(".s3db",".zip"),nomeDB,true);
emit zipFileName(idProva, zipName);
}
void myThread1::createDB(){
nomeDB=QString("R%2_Prova%1.s3db").arg(idProva).arg(nrampa);
QSqlDatabase db= QSqlDatabase::addDatabase("QSQLITE",nomeDB);
db.setDatabaseName(nomeDB);
if (!db.open()){
msg.setText(db.lastError().text());
msg.show();
}else{
db.exec("create table test (campo int)");
}
}
void myThread1::execCmd(QString cmd){
QSqlDatabase::database(nomeDB).exec(cmd);
}
void myThread1::zipDB(){
QString zipName;
zipName=nomeDB;
QSqlDatabase::removeDatabase(nomeDB);
archive(zipName.replace(".s3db",".zip"),nomeDB,true);
emit zipFileName(idProva, zipName);
QFile(nomeDB).remove();
}
To copy to clipboard, switch view to plain text mode
Now I use the QSqlDatabase db object only for set the database name, as variable and not as class member.
It run great.
Thanks
Michele
Bookmarks