#include "checkdbdriver.h"
#include "ui_checkdbdriver.h"
#include<QSqlDatabase>
#include<QSqlQuery>
#include<QMessageBox>
#include<QSqlError>
#include<QSqlTableModel>
CheckDBDriver::CheckDBDriver(QWidget *parent) :
QDialog(parent),
ui(new Ui::CheckDBDriver)
{
ui->setupUi(this);
//QStringList driverList = QSqlDatabase::drivers();
//ui->listWidget->addItems(driverList);
}
CheckDBDriver::~CheckDBDriver()
{
delete ui;
}
#include<QDebug>
void CheckDBDriver::on_pushButton_clicked()
{
QSqlQuery query;
query.exec("create table student(id int primary key,name varchar(20),sex varchar(5))");
query.prepare("insert into student values(?,?,?)");
QVariantList list;
list<<1<<2<<3<<4<<5<<6<<7<<8<<9;
query.addBindValue(list);
list.clear();
list<<"xiaowang1"<<"xiaowang2"<<"xiaowang3"<<"xiaowang4"
<<"xiaowang5"<<"xiaowang6"<<"xiaowang7"<<"xiaowang8"<<QVariant(QVariant::String);
query.addBindValue(list);
list.clear();
list<<"male"<<"female"<<"male"<<"female"<<"male"<<"female"<<"male"<<"female"<<QVariant(QVariant::String);
query.addBindValue(list);
if(!query.execBatch())
{
QMessageBox::warning(this,"warning",query.lastError().text());
return;
}
query.exec("select * from student");
// while(query.next())
// qDebug()<< query.value(0).toInt() << ","
// << query.value(1).toString() << ","
// << query.value(2).toString();
query.first();
qDebug()<< query.value(0).toInt() << ","
<< query.value(1).toString() << ","
<< query.value(2).toString();
query.last();
qDebug()<< query.value(0).toInt() << ","
<< query.value(1).toString() << ","
<< query.value(2).toString();
query.previous();
qDebug()<< query.value(0).toInt() << ","
<< query.value(1).toString() << ","
<< query.value(2).toString();
qDebug()<<"now record at->"<<query.at();
}
void CheckDBDriver::on_pushButton_2_clicked()
{
QSqlQuery query;
query.prepare("select name,sex from student where id=?");
//query.bindValue(0,ui->spinBox->value());
query.addBindValue(ui->spinBox->value());
bool ok = query.exec();
if(ok)
{
query.next();
ui->nameLabel->setText(query.value(0).toString());
ui->sexLabel->setText(query.value(1).toString());
}
else
{
QMessageBox::warning(this,"Error",query.lastError().text());
}
}
void CheckDBDriver::on_pushButton_3_clicked()
{
model->database().transaction();//启动事务处理
if(model->submitAll())
{
model->database().commit();
}
else
{
model->database().rollback();
QMessageBox::warning(this,"Error",model->lastError().text());
}
}
void CheckDBDriver::on_pushButton_4_clicked()
{
model->revertAll();
}
void CheckDBDriver::on_pushButton_5_clicked()
{
QString name = ui->nameLineEdit->text();
QString sex = ui->sexLineEdit->text();
if(!name.isEmpty())
{
model->setFilter(tr("name='%1'").arg(name));
}
if(!sex.isEmpty())
model->setFilter(tr("sex='%1'").arg(sex));
}
void CheckDBDriver::on_pushButton_6_clicked()
{
model->setTable("student");
model->select();
}
void CheckDBDriver::on_pushButton_7_clicked()
{
if(ui->ascRadioButton->isChecked())
model->setSort(1,Qt::AscendingOrder);
else
model->setSort(1,Qt::DescendingOrder);
model->select();
}
void CheckDBDriver::on_pushButton_8_clicked()
{
QModelIndex index = ui->tableView->currentIndex();
int curRow = index.row();
// int x = model->data(index,Qt::DisplayRole).toInt();
// ui->spinBox->setValue(x);
QString msg = model->data(index,Qt::DisplayRole).toString();
ui->nameLineEdit->setText(msg);
model->removeRow(curRow);
int ok = QMessageBox::warning(this,"确认删除!","你确定要删除当前记录?",QMessageBox::Yes,QMessageBox::No);
if(ok == QMessageBox::Yes)
{
model->submitAll();
}
else
model->revertAll();
}
void CheckDBDriver::on_pushButton_9_clicked()
{
int curRow = ui->tableView->currentIndex().row();
model->insertRow(curRow+1);
}
void CheckDBDriver::on_pushButton_10_clicked()
{
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("student.db");
// db.setHostName("127.0.0.1");
// db.setUserName(ui->usernameLineEdit->text());
// db.setPassword(ui->passwdLineEdit->text());
bool ok = db.open();
if(!ok)
{
QMessageBox::critical(0,"Error",
//"Can't establish data base connection");
db.lastError().text());
}
model = new QSqlTableModel(this);
//model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->setTable("student");
model->select();
ui->tableView->setModel(model);
//ui->tableView->setColumnWidth(0,32);
}