精华内容
下载资源
问答
  • 最近在观察一个系统时,发现其数据库的字段上...一般为了更好管理ORACLE数据库,通常像图片、文件、音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去。而像文档或者是较长文字,就用CLOB存储,这样对以

    最近在观察一个系统时,发现其数据库的字段上有一种CLOB类型,特地搜索整理后,明白。

    BLOB和CLOB属于大字段类型,BLOB是二进制存储,CLOB是可直接存储文字。两者可相互转换,也可以直接用LOB字段代替这两个。

    一般为了更好的管理ORACLE数据库,通常像图片、文件、音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去。而像文档或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等操作都提供很大的方便

    CLOB什么时候使用:

    当某个字段,要保存的长度太长时,varchar2最大4000,但是如果需要的字段长度大于4000应该怎么办,这时候就用clob。

    展开全文
  • go数据库mysql与redis

    2021-05-25 11:09:01
    所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。 RDBMS 即关系数据库管理系统(Relational Database Management System)的特点: 1.数据以表格的形式...
  • redis之db(数据库

    2021-01-25 14:28:28
    文章目录提问redis中的数据库db常用命令 提问 一台服务器上都快开启200个redis实例了,看着就崩溃了。这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开 那么,redis有没有什么方法使不同的应用程序...

    提问

    一台服务器上都快开启200个redis实例了,看着就崩溃了。这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开
    那么,redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的实例上呢?

    redis中的数据库

    redis下默认有16个数据库,每个数据库都有属于自己的空间,不必担心之间的key冲突
    redis下,数据库是由一个整数索引标识,而不是由一个数据库名称。默认情况下,一个客户端连接到数据库0。redis配置文件中下面的参数来控制数据库总数:

    目录/etc/redis/redis.conf 文件中,有个配置项 databases = 16 //默认有16个数据库
    在这里插入图片描述

    db常用命令

    # 切换数据库 。默认情况下,一个客户端连接到数据库0
    select index
    # 清除当前数据库下的所有数据
    flushdb
    # 清楚当前实例下所有的数据库内的数据
    flushall
    # ping指令测试当前数据库是否联通
    ping
    # echo指定输出语句
    echo [要输出的字符]
    # move指令将指定名称的key移动到指定数据库索引下的数据库
    move key_name db_Index
    # dbsize指令查看当前数据库下的key数量
    dbsize
    
    展开全文
  • oracle数据库经典题目

    2011-02-17 15:05:20
    检索数据库中的数据 D.为该变量检索列的数据类型和值 19.下列哪一项可以正确地引用该记录变量中的一个值?( B ) A.rec_abc(1) B. rec_abc(1).col C. rec_abc.col D.rec_abc.first() 20. 在定义游标时使用的FOR ...
  • 在数据库画板中可以显示数据库中的所有数据表(即使不是用PowerBuilder创建的表),创建数据表,修改表的定义等数据表是数据库中一个非常重要的对象,是其他对象的基础。没有数据表,关键字、主键、索引等也就...
  • 第1篇 创建属于自己oracle数据库  第1章 认识oracle世界——oracle体系结构  1.1 oracle发家史  1.2 数据库  1.3 数据库管理系统(dbms)  1.4 关系数据库的概念(rdbms)  1.4.1 关系数据库...
  • 第1篇 创建属于自己oracle数据库  第1章 认识oracle世界——oracle体系结构  1.1 oracle发家史  1.2 数据库  1.3 数据库管理系统(dbms)  1.4 关系数据库的概念(rdbms)  1.4.1 关系数据库...
  • 2.1.4 ODL中的联系和反向联系 2.1.5 联系的三种类型 2.2 实体联系模型(E-R图) 2.2.1 ER图中联系的三种类型 2.2.2 联系中的角色 2.2.3 联系的多向性 2.3 设计原则 2.3.1 真实性 2.3.2 避免冗余 2.3.3 简单性 2.3.4 ...
  • 1.2.1 怎样命名数据库文件 1.2.2 使用最佳灵活结构 1.2.3 怎样配置符合 OFA Oracle 文件 系统 1.3 规划数据库文件布局 1.3.1 最大化可用性规划 1.3.2 最小化磁盘争用规划 1.4 建立参数文件 1.4.1 ...
  • 第1篇 创建属于自己oracle数据库  第1章 认识oracle世界——oracle体系结构  1.1 oracle发家史  1.2 数据库  1.3 数据库管理系统(dbms)  1.4 关系数据库的概念(rdbms)  1.4.1 关系数据库模型...
  • 第1篇 创建属于自己Oracle数据库  第1章 认识Oracle世界——Oracle体系结构  1.1 Oracle发家史  1.2 数据库  1.3 数据库管理系统(DBMS)  1.4 关系数据库的概念(RDBMS)  1.4.1 关系数据库模型...
  • 第1篇 创建属于自己oracle数据库  第1章 认识oracle世界——oracle体系结构  1.1 oracle发家史  1.2 数据库  1.3 数据库管理系统(dbms)  1.4 关系数据库的概念(rdbms)  1.4.1 关系数据库模型...
  • 第1篇 创建属于自己oracle数据库  第1章 认识oracle世界——oracle体系结构  1.1 oracle发家史  1.2 数据库  1.3 数据库管理系统(dbms)  1.4 关系数据库的概念(rdbms)  1.4.1 关系数据库模型...
  • 第1篇 创建属于自己oracle数据库  第1章 认识oracle世界——oracle体系结构  1.1 oracle发家史  1.2 数据库  1.3 数据库管理系统(dbms)  1.4 关系数据库的概念(rdbms)  1.4.1 关系数据库模型...
  • 第1篇 创建属于自己oracle数据库  第1章 认识oracle世界——oracle体系结构  1.1 oracle发家史  1.2 数据库  1.3 数据库管理系统(dbms)  1.4 关系数据库的概念(rdbms)  1.4.1 关系数据库模型...
  • 第1篇 创建属于自己oracle数据库  第1章 认识oracle世界——oracle体系结构  1.1 oracle发家史  1.2 数据库  1.3 数据库管理系统(dbms)  1.4 关系数据库的概念(rdbms)  1.4.1 关系数据库模型...
  • 第1篇 创建属于自己oracle数据库  第1章 认识oracle世界——oracle体系结构  1.1 oracle发家史  1.2 数据库  1.3 数据库管理系统(dbms)  1.4 关系数据库的概念(rdbms)  1.4.1 关系数据库模型...
  • Mapping 类似数据库中的 schema 的定义,作用如下 定义索引中的字段的名称 定义字段的数据类型, 例如 字符串,数字,布尔 。。。 字段,倒排索引的相关配置,(Analyzed or Not Analyzed Analyzer) Mapping 会...

    什么是Mapping

    • Mapping 类似数据库中的 schema 的定义,作用如下
      1. 定义索引中的字段的名称
      2. 定义字段的数据类型, 例如 字符串,数字,布尔 。。。
      3. 字段,倒排索引的相关配置,(Analyzed or Not Analyzed Analyzer)
    • Mapping 会把 JSON 文件映射成 Lucene 所需要的扁平格式
    • 一个Mapping 属于一个索引的Type
      1. 每个文档都属于一个索引的Type
      2. 一个Type 有一个Mapping 定义
      3. 7.0 开始, 不需要在 Mapping 定义中指定 type 信息、

    字段的数据类型

    • 简单类型
      1. Text / Keyword
      2. Date
      3. Integer / Floating
      4. Boolean
      5. Ipv4 & Ipv6
    • 复杂类型 - 对象和嵌套对象
      1. 对象类型 / 嵌套类型
    • 特殊类型
      1. geo_point & geo_shape / percolator

    什么是 Dynamic Mapping

    • 在写入文档时候,如果索引不存在,会自动创建索引
    • Dynamic Mapping 的机制,使得我们无需手动定义 Mappings。ElasticSearch 会自动根据文档信息推算出字段的类型
    • 但是有时候会推算的不正确,例如 地理位置信息
    • 当类型如果设置不对时,会导致一些功能无法正常运行, 例如 Range 查询
    尝试添加一个文档
    // 写入文档,查看Mapping
    PUT mapping_test/_doc/1
    {
      "firstName": "Chan",
      "lastName" : "Jackie",
      "loginDate" : "2018-07-24T10:29:48.103Z"
    }
    
    
    查看mapping
    // 查看Mapping 文件
    GET mapping_test/_mapping
    
    返回
    {
      "mapping_test" : {
        "mappings" : {
          "properties" : {
            "firstName" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            },
            "lastName" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            },
            "loginDate" : {
              "type" : "date"
            }
          }
        }
      }
    }
    

    ** 我们看到这里。es 将 loginDate 字符串自动处理成了 date 类型的**

    重新添加一份
    // dynamic mapping 推断字段的类型
    PUT mapping_test/_doc/1
    {
      "uid":"123",
      "isVip": false,
      "isAdmin":"true",
      "age":19,
      "heigh":180
    }
    

    查看 mapping

    {
      "mapping_test" : {
        "mappings" : {
          "properties" : {
            "age" : {
              "type" : "long"
            },
            "heigh" : {
              "type" : "long"
            },
            "isAdmin" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            },
            "isVip" : {
              "type" : "boolean"
            },
            "uid" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            }
          }
        }
      }
    }
    
    

    我们看到ageheigh 都被处理为了long 类型, isVip 被处理为了 布尔类型,uId 被处理为了 text 类型,isAdmin 也被处理为了 text类型

    ES 的类型自动识别
    JSON类型 ElasticSearch 类型
    字符串 匹配日期格式
    字符串 设置数字设置为float 或者long ,该选项默认关闭
    字符串 设置为Text,并且增加 keyword 子字段
    布尔值 boolean
    浮点数 float
    整数 long
    对象 Object
    数组 由第一个非空数值的类型所决定
    空值 忽略
    能否修改Mapping的类型
    两种情况
    1. 新增加字段
      • Dynamic 设置为true 时, 一旦有新增字段的文档写入, Mapping 也同时被更新
      • Dynamic 设置为false 时,Mapping 不会被更新,新增字段的数据无法被索引,但是信息会出现在_source 中
      • Dynamic 设置成Strict, 文档写入失败
    2. 对已有字段,一旦已经有数据写入,就不再支持修改字段定义
      • Lucene 实现的倒排索引, 必须Reindex API, 重建索引
      • 因为如果修改了字段的数据类型,会导致已被索引的属性无法被搜索,
      • 但是如果是增加新的字段,就不会有这样的影响。
    true false strict
    文档可索引 YES YES NO
    字段可索引 YES NO NO
    Mapping可以被更新 YES NO NO
    控制 Dynamic Mappings
    • 当 dynamic 被设置为 false 的时候,存在新增字段的数据写入,该数据可以被索引。但是新增字段被丢弃
    • 当设置为 Strict 模式的时候,数据写入直接报错
    PUT index_test
    {
      "mappings": {
        "_doc":{
          "dynamic" : "false"
        }
      }
    }
    

    如何显示的定义一个Mapping

    PUT movies
    {
    	"mappings" : {
    		// defome your mappings here
    	}
    }
    
    举个例子

    Index - 控制当前字段是否被索引, 默认为 true ,如果设置为 false ,那么该字段就不可被搜索

    // 显示的创建Mapping
    PUT address_book
    {
      "mappings": {
        "properties": {
          "name":{
            "type": "text"
          },
          "address":{
            "type": "text"
          },
          "phone_num":{
            "type": "text",
            "index": false
          }
        }
      }
    }
    
    • 如果对 phone_num 进行搜索。那么将会报错
    GET address_book/_search
    {
      "query": {
        "match": {
          "phone": "151"
        }
      }
    }
    

    报错

    {
      "error": {
        "root_cause": [
          {
            "type": "query_shard_exception",
            "reason": "failed to create query: {\n  \"match\" : {\n    \"phone\" : {\n      \"query\" : \"151\",\n      \"operator\" : \"OR\",\n      \"prefix_length\" : 0,\n      \"max_expansions\" : 50,\n      \"fuzzy_transpositions\" : true,\n      \"lenient\" : false,\n      \"zero_terms_query\" : \"NONE\",\n      \"auto_generate_synonyms_phrase_query\" : true,\n      \"boost\" : 1.0\n    }\n  }\n}",
            "index_uuid": "2DiCWC3-Q762F70ezJS7RQ",
            "index": "address_book"
          }
        ],
        "type": "search_phase_execution_exception",
        "reason": "all shards failed",
        "phase": "query",
        "grouped": true,
        "failed_shards": [
          {
            "shard": 0,
            "index": "address_book",
            "node": "oBuLww9BSBOBEg8MebGboA",
            "reason": {
              "type": "query_shard_exception",
              "reason": "failed to create query: {\n  \"match\" : {\n    \"phone\" : {\n      \"query\" : \"151\",\n      \"operator\" : \"OR\",\n      \"prefix_length\" : 0,\n      \"max_expansions\" : 50,\n      \"fuzzy_transpositions\" : true,\n      \"lenient\" : false,\n      \"zero_terms_query\" : \"NONE\",\n      \"auto_generate_synonyms_phrase_query\" : true,\n      \"boost\" : 1.0\n    }\n  }\n}",
              "index_uuid": "2DiCWC3-Q762F70ezJS7RQ",
              "index": "address_book",
              "caused_by": {
                "type": "illegal_argument_exception",
                "reason": "Cannot search on field [phone] since it is not indexed."
              }
            }
          }
        ]
      },
      "status": 400
    }
    
    • 如果对name 进行搜索,那么手机号码还是会出现在_source 里面的
    GET address_book/_search
    {
      "query": {
        "match": {
          "name": "gaosongsong"
        }
      }
    }
    

    搜索结果

    {
      "took" : 0,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 1,
          "relation" : "eq"
        },
        "max_score" : 0.2876821,
        "hits" : [
          {
            "_index" : "address_book",
            "_type" : "_doc",
            "_id" : "1",
            "_score" : 0.2876821,
            "_source" : {
              "name" : "gaosongsong",
              "phone" : "15152268067"
            }
          }
        ]
      }
    }
    
    

    Index Options

    在这里插入图片描述

    • 四种不同的级别的Index Options 设置,可以控制倒排索引记录的内容
      1. docs - 记录 doc id
      2. freqs - 记录 doc id 和 term frequencies
      3. positions - 记录 doc id 和 term frequencies / term position
      4. offsets - doc id / term frequencies / term position /character offects
    • Text 类型默认记录 positions,其他默认为 docs
    • 记录内容越多,占用存储空间越大
    null_value
    • 需要对null 值进行搜索
    • 只有 KeyWord类型支持设定 null_Value

    在这里插入图片描述

    copy_to

    • _all 在 7 中被 copy_to 所替代
    • 满意一些特定的搜索要求
    • copy_to 将字段的数值拷贝到 目标字段, 实现类似 _all 的作用
    • copy_to 的目标字段不出现在 _source 中
      在这里插入图片描述

    多字段类型

    特性
    • 厂商名字实现精确匹配
      1. 增加一个 keyword 字段
    • 使用不同的 analyzer
      1. 不同语言
      2. pinyin 字段的搜索
      3. 还支持为搜索和索引指定不同的 analyzer

    Exact Value(精确值) 不需要被分词 比如 Apple Store
    ElsticSearch 中的 keyword
    全文本,非结构化的文本数据, ElasticSearch 中的 text

    • ElasticSearch 为每一个字段创建一个倒排索引
      1. Exact Value 在索引时, 不需要做特殊的粉刺处理
    展开全文
  • 单例模式,属于创建类型的一种常用软件设计模式。通过单例模式方法创建类在当前进程只有一个实例;简单定义为保证一个类仅有一个实例,并提供一个访问它全局访问点。 2、如何创建单例模式类? 单例类必须...

    一、 数据库表结构

    用户数据表与文件路径表设计如下,此外还会新增一个用户设置信息表,设置信息表保存用户账户,设置的图片文件保存路径,视频文件保存路径与录制时间
    数据库表结构

    二、Qt数据库单例类

    1、什么是单例类?
    首先理解一下什么是单例模式。单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例;简单定义为保证一个类仅有一个实例,并提供一个访问它的全局访问点。
    2、如何创建单例模式类?
    单例类必须要有一个 private 访问级别的构造函数,只有这样,才能确保单例不会在系统中的其他代码内被实例化;
    为满足以上条件,需要做的事情很简单:第一步,将构造函数设置为私有,不让在其它地方可以创建实例;第二步,创建一个公有静态函数接口,在接口中创建类的实例并返回;这样一来,在其它类里面要调用单例类的函数的话,就可以通过调用静态函数拿到类的示例然后再调用类的其它公有函数。
    内容参考: https://blog.csdn.net/qq_34337272/.
    https://blog.csdn.net/qq_36403434/.

    代码实现如下
    1、在Qt的pro文件中加上

    QT       += sql
    

    2、.h文件代码

    #ifndef SQLDATA_H
    #define SQLDATA_H
    
    #include <QString>
    #include <QSqlDatabase>
    
    class SqlData
    {
    public:
        static SqlData *getDB(const QString &filename);    
        void openDB(const QString &filename);
        void closeDB();
        void initUsertable();      //初始化用户数据表
        void initSourcetable();    //初始化文件资源数据表
        void initSettingTable();    //初始化设置信息数据表
    
        bool creatPath(const QString filePath);     //创建路径
        bool loginCheck(QString ID,QString Pwd);   //判断登录用户
        bool registCheck(QString ID, QString Name, QString Pwd);   //注册检测
        bool searchUser(QString ID);   //查找用户
        bool insertSourcetable(QString uId, QString date, QString type, QString path);     //插入文件资源表
        int checkSettingTable(QString uId);     //检测设置信息数据表
        bool insertSettingTable(QString uId, QString imgpath, QString videopath, QString time);     //插入设置信息表
        bool updateSettingTable(QString uId, QString imgpath, QString videopath, QString time);     //更新设置信息表
    
    private:
        SqlData(const QString &filename);   //初始化函数私有
        static SqlData *pSqlData;	//返回的单例类
        QSqlDatabase pSqlDatabase;
    };
    
    #endif // SQLDATA_H
    
    

    3、.c文件代码

    #include "sqldata.h"
    #include "allwidget.h"	//窗口管理
    #include <QtSql>
    #include <QSqlDatabase>
    #include <QSqlError>
    #include <QDebug>
    #include <QSqlQuery>    //提供了数据库执行和操作的方法
    #include <QMessageBox>
    #include <QDir>
    
    SqlData *SqlData::pSqlData = NULL;
    
    SqlData::SqlData(const QString &filename)
    {
        this->openDB(filename);
    }
    //公有静态函数接口,在接口中创建类的实例并返回
    SqlData *SqlData::getDB(const QString &filename)
    {
        if(NULL == pSqlData)
        {
            pSqlData = new SqlData(filename);
        }
        return pSqlData;
    }
    
    void SqlData::openDB(const QString &filename)
    {
        //添加数据库驱动
        pSqlDatabase = QSqlDatabase::addDatabase("QSQLITE");
        pSqlDatabase.setDatabaseName(filename.toStdString().c_str());
        //使用数据库驱动 去调用DDL语句
        //打开数据库
        if(!pSqlDatabase.open())
        {
            qDebug() << pSqlDatabase.lastError();
        }
        else
        {
            initUsertable();
            initSourcetable();
            initSettingTable();
        }
    }
    //关闭数据库
    void SqlData::closeDB()
    {
        pSqlDatabase.close();
    }
    
    void SqlData::initUsertable()
    {
        QSqlQuery pSqlQuery;
        //QString drop_sql = "drop table user;";
        QString create_sql = "create table usr(uId VARCHAR primary key,uName VARCHAR,pwd VARCHAR,state INT);";
        //QString select_sql = "select *from usr;";
    
        pSqlQuery.prepare(create_sql);
        if(!pSqlQuery.exec()){
            qDebug() << pSqlQuery.lastError();
        }
        else{
            qDebug() << "usr table create";
        }
    }
    
    void SqlData::initSourcetable()
    {
        QSqlQuery pSqlQuery;
        //QString drop_sql = "drop table source;";
        QString create_sql = "create table source(id INTEGER primary key AUTOINCREMENT,uId VARCHAR,date TEXT,type VARCHAR,path TEXT);";
        //QString select_sql = "select *from source;";
    
        pSqlQuery.prepare(create_sql);
        if(!pSqlQuery.exec()){
            qDebug() << pSqlQuery.lastError();
        }
        else{
            qDebug() << "source table create success!";
        }
    }
    
    void SqlData::initSettingTable()
    {
        QSqlQuery pSqlQuery;
        QString create_sql = "create table setting(uId VARCHAR,imgpath TEXT,videopath TEXT,time TEXT);";
    
        pSqlQuery.prepare(create_sql);
        if(!pSqlQuery.exec()){
            qDebug() << pSqlQuery.lastError();
        }
        else{
            qDebug() << "setting table create success!";
        }
    }
    
    bool SqlData::creatPath(const QString filePath)
    {
        QDir dir(filePath);
        if(dir.exists()) {
            return true;
        }
        else {
            bool ok = dir.mkpath(filePath);  //创建多级目录
            return ok;
        }
    }
    
    bool SqlData::loginCheck(QString ID, QString Pwd)
    {
        bool ret = searchUser(ID);
        if(ret != true)
        {
            QMessageBox::information(NULL,"提示","账号不存在");
            return false;
        }
        else
        {
            QSqlQuery pSqlQuery;
            QString select_sql = QString("select * from usr where uId = '%1' and pwd = '%2';").arg(ID).arg(Pwd);
            qDebug()<<select_sql;
            pSqlQuery.prepare(select_sql);
            if(!pSqlQuery.exec())
            {
                qDebug()<<"登录失败"<<pSqlQuery.lastError();
                return false;
            }
            else
            {
                QString id;
                QString pwd;
                while(pSqlQuery.next())
                {
                    id = pSqlQuery.value(0).toString();
                    pwd = pSqlQuery.value(2).toString();
                    qDebug()<<QString("id:%1 pwd:%2").arg(id).arg(pwd);//  sprintf("")
                }
                if(id == 0)
                {
                    qDebug()<<"登录失败 密码错误";
                    QMessageBox::information(NULL,"提示","登录失败 密码错误");
                    return false;
                }
                else
                {
                    qDebug()<<"登录成功";
                    return true;
                }
            }
        }
    }
    
    bool SqlData::registCheck(QString ID, QString Name, QString Pwd)
    {
        bool ret = searchUser(ID);
        if(ret == false)
        {
            QSqlQuery mySqlQuery;
            QString insert_sql = QString("insert into usr values('%1','%2','%3',1);").arg(ID).arg(Name).arg(Pwd);
            mySqlQuery.prepare(insert_sql);
            if(!mySqlQuery.exec())
            {
                qDebug()<<"注册失败"<<mySqlQuery.lastError();
                QMessageBox::information(NULL,"提示","注册失败");
                return false;
            }
            else
            {
                qDebug()<<"注册成功";
                QMessageBox::information(NULL,"提示","注册成功");
                return true;
            }
        }
        else
        {
            qDebug()<<"账号已存在";
            QMessageBox::information(NULL,"提示","账号已存在");
            return false;
        }
    }
    
    bool SqlData::searchUser(QString ID)
    {
        QSqlQuery pSqlQuery;
        QString select_sql = QString("select * from usr where uId = '%1';").arg(ID);
        qDebug()<<select_sql;
        pSqlQuery.prepare(select_sql);
        if(!pSqlQuery.exec()) {
            qDebug()<<"查询失败"<<pSqlQuery.lastError();
            return false;
        }
        else {
            QString id;
            while(pSqlQuery.next())
            {
                id = pSqlQuery.value(0).toString();
            }
            if(id == NULL) {
                qDebug()<<"账号不存在";
                return false;
            }
            else {
                qDebug()<<"账号已注册";
                return true;
            }
        }
    }
    
    bool SqlData::insertSourcetable(QString uId, QString date, QString type, QString path)
    {
        if(!uId.isEmpty()) {
            QSqlQuery pSqlQuery;
            QString insert_source = QString("insert into source values(NULL,'%1','%2','%3','%4');").arg(uId).arg(date).arg(type).arg(path);
            pSqlQuery.prepare(insert_source);
            if(!pSqlQuery.exec()){
                qDebug()<<"表格插入失败"<<pSqlQuery.lastError();
                return false;
            }
            else{
                qDebug()<<"表格插入成功";
                return true;
            }
        }
    }
    
    int SqlData::checkSettingTable(QString uId)
    {
        QSqlQuery pSqlQuery;
        QString checkTable = QString("select * from setting where uId = %1;").arg(uId);
        pSqlQuery.prepare(checkTable);
        if(!pSqlQuery.exec()) {
            qDebug() << pSqlQuery.lastError();
            return 0;
        }
        else {
        	QString imgPath;
            QString videoPath;
            QString timeInterval;
            while(pSqlQuery.next())
            {
            	//将查询大的设置信息赋值给设置界面的结构体当中
                imgPath  = pSqlQuery.value(1).toString();
                videoPath = pSqlQuery.value(2).toString();
                timeInterval = pSqlQuery.value(3).toString();
            }
            qDebug() << imgPath << videoPath << timeInterval;
            if(imgPath.isEmpty()){
                qDebug() << "Never Setting Path";
                return 2;
            }
            else {
            	//检测路径是否存在 不存在 创建路径
                bool ret = creatPath(imgPath);
                bool ret2 = creatPath(videoPath);
                if(ret == true && ret2 == true) {
                    qDebug() << "Allready setting";
                    return 1;
                }
                else {
                    qDebug() << "Never Setting Path";
                    return 2;
                }
            }
        }
    }
    
    bool SqlData::insertSettingTable(QString uId, QString imgpath, QString videopath, QString time)
    {
        QSqlQuery pSqlQuery;
        QString insert = QString("insert into setting values('%1','%2','%3','%4')").arg(uId).arg(imgpath).arg(videopath).arg(time);
        pSqlQuery.prepare(insert);
        if(!pSqlQuery.exec()) {
            qDebug() << "setting insert failed!";
            return false;
        }
        else {
            qDebug() << "setting insert success!";
            return true;
        }
    }
    
    bool SqlData::updateSettingTable(QString uId, QString imgpath, QString videopath, QString time)
    {
        QSqlQuery pSqlQuery;
        QString update_table = QString("update setting set imgpath = '%1',videopath = '%2',time = '%3' where uId = '%4';").arg(imgpath).arg(videopath).arg(time).arg(uId);
        pSqlQuery.prepare(update_table);
        if(!pSqlQuery.exec()) {
            qDebug() << "update table failed!";
            return false;
        }
        else {
            qDebug() << "update table success!";
            return true;
        }
    }
    
    
    
    展开全文
  • //insert into users values(7,'ddf','aa','2018-7-2 16:23:39',1,1,' ','KEY认证需要的文件',''); ./userGroupUser users -A -n dds -a 1 -p sd -rkj -gaa //添加用户 name=dds authentication=1 group=aa //...
  • 3.4.2 Oracle数据库中的存储层次体系 87 3.4.3 字典管理和本地管理的表空间 90 3.5 临时文件 92 3.6 控制文件 94 3.7 重做日志文件 94 3.7.1 在线重做日志 95 3.7.2 归档重做日志 97 3.8 密码文件 99 3.9 ...
  • 6.5.5 备用数据库中的块更改跟踪支持 248 第7章 Data Pump 249 7.1 API增强 249 7.2 压缩增强 250 7.3 加密 253 7.3.1 指定加密 254 7.3.2 选择加密方式 254 7.4 重用转储文件 256 7.5 重映射数据 257 7.6...
  • 3.4.2 Oracle数据库中的存储层次体系 87 3.4.3 字典管理和本地管理的表空间 91 3.5 临时文件 93 3.6 控制文件 95 3.7 重做日志文件 95 3.7.1 在线重做日志 96 3.7.2 归档重做日志 98 3.8 密码文件 100 3.9 ...
  • 在开始之前,我们需要明确什么是C#(或者说.NET)中的资源,打码的时候我们经常说释放资源,那么到底什么是资源,简单来讲,C#中的每一种类型都是一种资源,而资源又分为托管资源和非托管资源,那这又是什么?...
  • 熟练地从mysql数据库中选择数据 轻松执行SQL连接 能够将SQL输出格式化为可读报告 指示 第1部分:导入数据 方向: 在intellij中, 创建你宠物小精灵模式 解压缩pokemon_sql.zip文件 一对一执行这些文件,确保...
  •  74简述在关系数据库中关系具有性质?P139  75简述E-R图中实体之间联系的类型?P139  76简述由E-R图向关系模型转换规则?P140  77简述计算机主机选型步骤?P140  78系统软件主要包括哪些内容?P140 ...
  • 在有些时候,我们需要从数据库读取数据填充对象或从硬盘读取文件填充对象,但是这样做相对耗时。这时候我们就想到了对象拷贝。本文即以实例形式解析了C#浅拷贝和深拷贝用法。 C#有两种类型变量,一种 是值...
  • ABAP中文幫助文檔

    2018-10-27 19:07:09
     应用程序中的逻辑数据库(仅报表程序):这些属性决定报表使用哪个逻辑数据库检索数据,以及逻辑数据库属于哪个应用程序。应用程序中数据库名称必须是唯一的。但是,整个系统可以包括数个同名数据库。因此指定应用...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 194
精华内容 77
关键字:

数据库中的文件类型属于什么文件