对QSqlite数据库的操作

来源:互联网 发布:电机正反转编程 编辑:程序博客网 时间:2024/06/05 08:01

我刚开始学习数据库,觉得很有用,就转载供以后参考。

 

首先新建一个数据库:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("database.db");

 

给数据库文件加密:

db.setUserName("hsl");

db.setPassword("000000"); //注意,这仅仅是对database.db这个文件进行加密

将数据库显示在QTableView中

QTableView *selectView;

QSqlTableModel *model;

 model=new QSqlTableModel(this);
    model->setTable("表名");
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
    model->select();
    model->setHeaderData(0,Qt::Horizontal,tr("xx"));
    model->setHeaderData(1,Qt::Horizontal,tr("xx"));
    model->setHeaderData(2,Qt::Horizontal,tr("xx"));

selectView=new QTableView(this);
    selectView->setAlternatingRowColors(true);//可以改变QableView颜色
    selectView->setModel(model);

 

对QtableView中的数据进行操作:

在tableview中升序排列:

model->setSort(0,Qt::AscendingOrder); //id属性,即第0列,升在tableview中序排列
model->select();


在tableview中按降序 排列:

model->setSort(0,Qt::DescendingOrder);
model->select();

在tableview中删除行
 int curRow = ui->tableView->currentIndex().row();   //获取选中的行  
 model->removeRow(curRow);  //删除该行
 int ok = QMessageBox::warning(this,tr(“删除当前行!”),tr(“你确定删除当前行吗?”),QMessageBox::Yes,QMessageBox::No);
 if(ok == QMessageBox::No)
 {    
         model->revertAll(); //如果不删除,则撤销
 } 
 else 
        model->submitAll();

在tableview中插入

 int rowNum = model->rowCount(); //获得表的行数
 int id = 10;
 model->insertRow(rowNum); //添加一行
 model->setData(model->index(rowNum,0),id);

对数据库表进行查询

(1)全字匹配

QString str = "hsl";

        model->setFilter(QObject::tr("name = '%1'").arg(str));
        model->select();

(2)模糊匹配

 QString str = a_ui->find_lineEdit->text();
       //QT正则表达式
       rx.setPatternSyntax(QRegExp::RegExp);
       //匹配格式为所有数字组成的字符串,位数不限
       rx.setPattern(QString("^[0-9]+$"));
       //如果全是数字,进行 ID 的模糊查询
       if(rx.exactMatch(str))
        {
            model->setFilter(QString::fromLocal8Bit("dish_no like '%1'").arg(QString("%")+=str+=QString("%")));
            model->select();
        }
        else
        {
            model->setFilter(QString::fromLocal8Bit("dish_name like '%1'").arg(QString("%")+=str+=QString("%")));
            model->select();
        }

 

原创粉丝点击