【数据库】Sqlite常用语法

1.pro中增加QT += sql
2.头文件:

  • #include <QSqlDatabase>
  • #include <QSqlQuery>
  • #include <QVariant>

1.创建库

   QSqlDatabase db;

    if (QSqlDatabase::contains("firstDatabase"))
    {
        db = QSqlDatabase::database("firstDatabase");
    }
    else
    {
        //建立和sqlite数据的连接
        db = QSqlDatabase::addDatabase("QSQLITE","firstDatabase");
    }
    //设置数据库文件的名字
    QString dbname = "D:/MySqlite/test.db";
    db.setDatabaseName(dbname);


2.创建表

    QSqlQuery * sql = new QSqlQuery(db);

//    if(db.tables().contains(strTableName))
//    {
//        cout<<"此表已经存在";
//    }

    //创建表
    sql->exec(QString("create table '%1' (ID,Value)").arg(strTableName));

3.插入

/*插入*/
bool Sqlite::dbInsert(QSqlQuery *_sql)
{
    _sql->prepare(QString("insert into '%1' values (?,?)").arg(strTableName));
    _sql->bindValue(0,rand()%10);
    _sql->bindValue(1,rand()%100);
    _sql->exec();
    if(!_sql->execBatch())
    {
        cout<<_sql->lastError();
    }
    return true;
}

4.更新

4.1.单个值修改

将ID为1的值改为字符串“str”;

/*更新*/
bool Sqlite::dbUpDate(QSqlQuery *_sql)
{
    _sql->prepare(QString("update '%1' set Value=? where ID=?").arg(strTableName));
    _sql->bindValue(0,1);
    _sql->bindValue(1,"str");
    _sql->exec();
    return true;
}

4.2.多个值修改

    _sql->prepare(QString("updata '%1' set Value=?,Name=? where ID=?").arg(strTableName));
    _sql->bindValue(0,1);
    _sql->bindValue(1,"str");
    _sql->bindValue(2,"abc");
    _sql->exec();

备注:如果更新语句中不指定where ID=?,则会修改一整列。

5.删除

/*删除*/
bool Sqlite::dbDelete(QSqlQuery *_sql)
{
    //删除ID为1的行
    _sql->prepare(QString("delete from '%1' where ID=?").arg(strTableName));
    _sql->bindValue(0,1);
    _sql->exec();
    return true;
}

6.新插入一列

sqlite没法一次性插入多列,如果需要插入多列则要写多条alter table '%1' add column 列名语句。

bool Sqlite::dbInsertColumn(QSqlQuery *_sql)
{
    _sql->exec(QString("alter table '%1' add column newColumn").arg(strTableName));
    _sql->prepare(QString("insert into '%1' values (?)").arg(strTableName));
    _sql->bindValue(0,1);
    _sql->exec();
    return true;
}

7.获取表的行数

输出该表内总行数

sql->exec(QString("select count(*) from '%1'").arg(strTableName));
sql->next();
cout<<sql->value(0).toInt();

注意

1.%1字符串替换的时候要加上单引号'%1',可以避免字符串替换时包含特殊符号导致的错误;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非西昂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值