INSERT INTO TABLE2 (<тут через запятую поля строки>)
VALUES (
SELECT * FROM TABLE1
WHERE <имя первичного ключа>=:pk)
где :pk подстановочное имя используемое в QSqlQuery::prepare() и QSqlQuery::bind() а значение его ты его определил чуть раньше.
static bool createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName ("C:\\addressbook");
db.setUserName("root");
db.setHostName("Notebook");
db.setPassword("root");
if (!db.open()) {
qDebug() << "Cannot open database:" << db.lastError();
return false;
}
return true;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget *window = new QWidget;
window->setWindowTitle("Sqlite COPY/PASTE");
QPushButton *button = new QPushButton ("Copy");
connect (button, SIGNAL(clicked()), получатель , SLOT(слот));
button->show();
//Соединяемся с менеджером баз данных
if (!createConnection()) {
return -1;
}
//Создаем базу
QSqlQuery query;
QString str = "CREATE TABLE addressbook2 ( "
"number INTEGER PRIMARY KEY NOT NULL, "
"name VARCHAR(15), "
"phone VARCHAR(12), "
"email VARCHAR(15) "
");";
if (!query.exec(str)) {
qDebug() << "Unable to create a table";
}
//Добавляем данные в базу
QString strF =
"INSERT INTO addressbook2 (number, name, phone, email) "
"VALUES(%1, '%2', '%3', '%4');";
str = strF.arg("1")
.arg("Piggy")
.arg("+49 631322187")
.arg("piggy@mega.de");
if (!query.exec(str)) {
qDebug() << "Unable to do insert operation";
}
str = strF.arg("2")
.arg("Kermit")
.arg("+49 631322181")
.arg("kermit@mega.de");
if (!query.exec(str)) {
qDebug() << "Unable to do insert operation";
}
if (!query.exec("SELECT * FROM addressbook2;")) {
qDebug() << "Unable to execute query - exiting";
return 1;
}
//Считываем данные из базы
QSqlRecord rec = query.record();
int nNumber = 0;
QString strName;
QString strPhone;
QString strEmail;
while (query.next()) {
nNumber = query.value(rec.indexOf("number")).toInt();
strName = query.value(rec.indexOf("name")).toString();
strPhone = query.value(rec.indexOf("phone")).toString();
strEmail = query.value(rec.indexOf("email")).toString();
qDebug() << nNumber << " " << strName << ";\t"
<< strPhone << ";\t" << strEmail;
}
QTableView view;
QSqlTableModel model;
model.setTable("addressbook2");
model.select();
model.setEditStrategy(QSqlTableModel::OnFieldChange);
view.setModel(&model);
view.show();
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(button);
window->setLayout(layout);
window->show();
return a.exec();
}
INSERT INTO addressbook1 (name, phone, email)
VALUES (
SELECT name, phone, email FROM addressbook2
WHERE number = 1)
class MyClass : public QObject
{
Q_OBJECT
public slots:
void myButton_slot();
private:
Q_DISABLE_COPY(MyClass)
};
MyClass::MyClass()
{
// соединем событие нажати кнопки с нашим слотом myButton_slot()
connect (button, SIGNAL(clicked()), this , SLOT(myButton_slot()));
}
void MyClass::myButton_slot()
{
// здесь что-то делаем по команде кнопки, выполняем нужный нам sql
}