qDebug() << QSqlDatabase::drivers();
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
QSqlDatabase:QMYSQL driver not load 之Qt与MySQL连接报错的解决办法
//连接mySql数据库
db.setHostName("127.0.0.1"); //ip地址
db.setUserName("root");
db.setPassword("12345678");
db.setDatabaseName("histudents");//数据库名
if(!db.open()){
QMessageBox::warning(this,"错误","连接数据库失败");
return;
}
qDebug() << "连接数据库成功!";
//1 建表
//语句: create table 表名(字段名 类型(大小) 主键限制,字段名 类型(大小),...);
//例如: create table student(id int primary key,name varchar(256));
// create table histudent(id int primary key auto_increment,name varchar(256),age int,score int);
QSqlQuery query;
//query.exec("create table histudent(id int primary key auto_increment,name varchar(256),age int,score int);");
//2 插入
/*
语句:insert into 表名(字段名,字段名,...) values(数据,数据,...);
例如:
insert into histudent(id,name,age,score) values(1,'张三',33,333);
insert into histudent(id,name,age,score) values(2,'lisi',44,444);
insert into histudent(name,age,score) values('wangwu',55,555);
insert into histudent(name,age,score) values('赵六',66,6666);
query.exec("insert into histudent(id,name,age,score) values(2,'lisi',44,444);");
query.exec("insert into histudent(name,age,score) values('wangwu',55,555);");
query.exec("insert into histudent(name,age,score) values('赵六',66,6666);");
//3 删除
/*
语句:delete from 表名 where 限定语句;
例如:delete from histudent where name='张三';
*/
query.exec("delete from histudent where name='张三';");
//4 查询
/*
语句: select 字段名,字段名,... from 表名 where 限定表达式;
例如:
select * from histudent;
select id,name from histudent;
select * from histudent where age=1111;
*/
//query.exec("select * from histudent;");
while(query.next()){
qDebug() << query.value(0).toInt() << query.value(1).toString()
<< query.value(2).toInt() << query.value(3).toInt() ;
}
query.exec("select * from histudent where age=1111");
while(query.next()){
qDebug() << query.value(0).toInt() << query.value("name").toString()
<< query.value("age").toInt() << query.value("score").toInt() ;
}
//删除
void Widget::on_btnDelete_clicked()
{
QString name = ui->lineEdit->text();
QString sql = QString("delete from histudent where name = '%1';").arg(name);
//启动事务
QSqlDatabase::database().transaction();
QSqlQuery query;
query.exec(sql);
}
//确定
void Widget::on_btnSure_clicked()
{
QSqlDatabase::database().commit();
}
//取消
void Widget::on_btnCancel_clicked()
{
QSqlDatabase::database().rollback();
}
qDebug() << QSqlDatabase::drivers();
//添加数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
//设置连接的数据库
db.setDatabaseName("../histudent.db");
//连接
if(!db.open()){
QMessageBox::warning(this,"失败","连接数据库失败");
return;
}
qDebug() << "连接数据库成功!";
//建表
QSqlQuery query;
query.exec("create table histudent(id int primary key,name varchar(256),age int,score int);");
//占位
query.prepare("insert into histudent(name,age,score) values(?,?,?)");
//准备数据
QVariantList nameList;
nameList<<"关羽"<<"张飞" <<"赵云" <<"马超" << "黄忠";
QVariantList ageList;
ageList<<2080<<2070<<2060<<2050<<2100;
QVariantList scoreList;
scoreList<< 99<<66<<77<<33<<12;
//绑定
query.addBindValue(nameList);
query.addBindValue(ageList);
query.addBindValue(scoreList);
//添加
query.execBatch();
//查找
query.exec("select * from histudent;");
while(query.next()){
qDebug() << query.value(0).toInt() << query.value(1).toString()
<< query.value("age").toInt() << query.value("score").toInt();
}
//查看当前qt支持的数据库
qDebug() << QSqlDatabase::drivers();
//添加mysql数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
//设置数据库连接的 参数
db.setHostName("127.0.0.1"); //地址
db.setUserName("root"); //用户名
db.setPassword("12345678"); //密码
db.setDatabaseName("student"); //数据库名
//连接数据库
if(!db.open()){
QMessageBox::warning(this,"错误","数据库连接失败");
return;
}
qDebug() << "连接数据库成功!";
//1. 创建模型对象
pSqlTableView = new QSqlTableModel(this);
//2. 设置表格
pSqlTableView->setTable("histudent");
//3. 显示表格
//3.1 把模型和控件关联
ui->tableView->setModel(pSqlTableView);
//3.2 显示表格
pSqlTableView->select();
//设置只读
//ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
//不允许在界面上通过编辑tableView来修改
pSqlTableView->setEditStrategy(QSqlTableModel::OnManualSubmit);
//查询
void Widget::on_btnSelect_clicked()
{
QString name = ui->lineEdit->text();
QString str = QString("name = '%1'").arg(name);
pSqlTableView->setFilter(str);
pSqlTableView->select();
}
//添加
void Widget::on_btnAdd_clicked()
{
//1 获取一条空记录
QSqlRecord record = pSqlTableView->record();
//2 获取到当前记录条数
int num = pSqlTableView->rowCount();
//3 添加空行
pSqlTableView->insertRecord(num,record);
}
//删除
void Widget::on_btnDelete_clicked()
{
//1. 获取用户选中的
QItemSelectionModel* pItem = ui->tableView->selectionModel();
//2. 获取到用户选中的每一条
QModelIndexList list = pItem->selectedRows();
//3. 循环删除
for(int i=0;i<list.size();i++)
pSqlTableView->removeRow(list.at(i).row());
}
//确定
void Widget::on_btnSure_clicked()
{
pSqlTableView->submitAll();
}
//取消
void Widget::on_btnCancel_clicked()
{
pSqlTableView->revertAll();
pSqlTableView->submitAll();
}