Qt sqlit3的增、删、改、查、判断等基本操作接口

1、Qt sqlit3简介

Qt SQLite(sql)是一款不需要服务器的开源轻量级的数据库软件,可以集成在其他软件中,适合嵌入式系统应用。Qt5以上版本直接支持SQLite。具体的特性和语法可以参考RUNOOB. 这里我把自己项目中用到的基本操作函数贴出来。

这里主要介绍操作接口:

  1. 连接sqlit数据库
  2. 关闭sqlit数据库
  3. 判断sqlit表格是否存在
  4. 判断是否表中某个字段存在某个值
  5. 判断sqlit表中是否存在sysid
  6. sqlit新建表
  7. sqlit插入项目
  8. 删除sqlit指定表中指定项目中指定的内容
  9. 更新sqlit表中的内容

2、使用方法

在工程配置文件.pro中添加QT对sqlit的支持。

QT += sql

3、接口文件

3.1 连接sqlit数据库

static bool connectMyDB()
{
    QString dbName = "MysqliteDB";
    QString dbuser = "jianwang16";
    QString dbpassword = "password123456";

    if(QSqlDatabase::contains(dbName))
    {
        //如已经打开这个数据库,直接调出这个数据连接
        database = QSqlDatabase::database(dbName);
    }
    else
    {
        //否则打开这个数据库,注意带上数据库名
        database = QSqlDatabase::addDatabase("QSQLITE");
        database.setDatabaseName(dbName);
        database.setUserName(dbuser);
        database.setPassword(dbpassword);
     }

    if (!database.open())
    {
        QMessageBox::critical(NULL, "错误", " Unable to establish a database connection!!! ", QMessageBox::Cancel, QMessageBox::Cancel);
        qDebug() << "Error: Failed to connect database." << database.lastError();
        return false;
    }
    else
    {
        qDebug()<<"数据库打开成功!";
        return true;
    
}

3.2 关闭sqlit数据库

static void closeMyDB()
{
    database.close();
}

3.3 判断sqlit表格是否存在

static bool isExistTable(const QString& strTableName)
{
    if(connectMyDB())
    {
            QStringList tables = database.tables(); //获取数据库中的表
            qDebug() <

3.4 判断是否表中某个字段存在某个值

static bool isExist(const QString& strTableName, const QString& strFieldName,const QString& text)
{
    if(connectMyDB())
    {
        QSqlQuery query;
        QString strSql = QString("SELECT 1 FROM %1 WHERE %2     
                      ='%3'").arg(strTableName).arg(strFieldName).arg(text);//select from
        query.prepare(strSql);
        if(query.exec())
        {
            qDebug()<

3.5 判断sqlit表中是否存在sysid

*说明:System_ID是我表中的字段。一下函数的意思是判断我的某个表中System_ID是否存在这个sysid。

static bool isExistSystemID(const QString& strTableName, const QString& sysid)
{
    if(connectMyDB())
    {
        QSqlQuery query(database);
        QString sql = QString("select 1 from %1 where System_ID ='%2'").arg(strTableName).arg(sysid);
        query.prepare(sql);
        qDebug()<

3.6 sqlit新建表

static void creatTable(const QString& strTableName)
{
        QSqlQuery query;
        if (!query.exec(QString("CREATE TABLE %1("
                                          "id INTEGER PRIMARY KEY AUTOINCREMENT,"//主键
                                          "System_ID VARCHAR,"//系统ID
                                          "User_ID VARCHAR,"//用户ID
                                          "SubMeter_Num VARCHAR,"//子表序号
                                          "CMD_Time VARCHAR)").arg(strTableName)))
         {
              qDebug() <<"Create"<< strTableName<<"Table Failed!";
         }
         else
         {
              qDebug() << "Create"<< strTableName<<"Table OK!";
         }
}

3.7 sqlit插入项目

static void addIterm( const QString& strTableName,
                                   const QString& System_ID,
                                   const QString& User_ID,
                                   const QString& DTU_ID,
                                   const QString& SubMeter_Num)
{

    QSqlQuery query(database);
    QString select_max_sql =QString("select max(id) from %1").arg(strTableName);
    qDebug()<static bool deleteiterm(const QString& tablename, const QString& item, const QString & text)
{
    if(connectMyDB())
    {
        QSqlQuery query(database);
        QString delete_sql = QString("delete from %1 where %2 = ?").arg(tablename).arg(item);
        query.prepare(delete_sql);
        query.addBindValue(text);
        if(!query.exec())
        {
            qDebug()<

3.9 更新sqlit表中的内容

static void updateitem( const QString& strTableName,
                                   const QString& systemid,
                                   const QString& User_ID,
                                   const QString& DTU_ID,
                                   const QString& SubMeter_Num)
{
    if(connectMyDB())
    {
        QSqlQuery query(database);
        query.prepare(QString("UPDATE  %1 SET "
                            "User_ID = :User_ID,"
                            "DTU_ID = :DTU_ID,"
                            "SubMeter_Num = :SubMeter_Num,"
                             WHERE System_ID = %2").arg(strTableName).arg(systemid));
        query.bindValue(":User_ID",User_ID);
        query.bindValue(":DTU_ID",DTU_ID);
        query.bindValue(":SubMeter_Num",SubMeter_Num);
            
        if(query.exec())
        {
            qDebug()<<"更新成功";
        }
        else
        {
            qDebug()<<"更新失败";
        }
    }
}

 

你可能感兴趣的:(QtCreator,sqlite,基本操作,接口)