精华内容
下载资源
问答
  • 数据库对比

    2012-02-22 10:23:27
    sql 2000的数据库对比工具 支持2个数据库的对比 对比存储过程、视图 逐行排空对比,忽略大小写对比,使对比更准确。 采用缓存机制,将对象内容缓存到本机进行对比, 右键点击列表,有相关选项,可详细对比, ...
  • sql数据库对比工具

    2018-08-15 16:16:00
    sql数据库对比工具sql数据库对比工具sql数据库对比工具sql数据库对比工具sql数据库对比工具sql数据库对比工具sql数据库对比工具sql数据库对比工具sql数据库对比工具sql数据库对比工具sql数据库对比工具sql数据库对比...
  • 数据库对比工具

    2018-04-07 11:13:03
    数据库对比,支持oracle、mysql,只能比较同一种数据库类型
  • sql 数据库对比工具

    2019-03-13 08:53:32
    数据库对比工具 可以发现2个数据库的不同 BXCSQLdxdb
  • 简便数据库对比工具
  • 主流数据库对比,主流数据库性能、选型对比

    主流数据库对比,主流数据库性能、选型对比

    在这里插入图片描述

    展开全文
  • BXCSQLdb数据库对比工具,压缩包,无密码 21
  • 很多会员不会数据库对比,今天云创源码给大家发布一套微擎数据库结构对比教程,个别模块或多或少有需要对比数据库结构的时候。一般存在于安装模块缺少字段等问题。比较常见的如【禾匠小程序商城,如升级的时候都需要...

    很多会员不会数据库对比,今天云创源码给大家发布一套微擎数据库结构对比教程,个别模块或多或少有需要对比数据库结构的时候。一般存在于安装模块缺少字段等问题。比较常见的如【禾匠小程序商城,如升级的时候都需要对比数据库结构】,【人人商城首次安装,对比下数据库结构,因

    常用于各类模块升级,或者安装缺数据库表、字段的情况下。一样的模块一样的程序到了不同站点,个别用户可能就会出现安装后少数据库表的情况,通常遇到此问题就可以尝试对比下数据库结构来解决。

    本文以【禾匠

    1.正在运营的站点,已上线的项目请一定备份下,文件备份和数据库都需要备份

    2.将禾匠的后端文件zjhj_mall打包上传到微擎站点的addons文件夹,解压覆盖

    3.微擎后台–更新系统缓存–小程序应用–已安装应用–升级(禾匠)

    如果框架是2.0版的,应用管理–已安装应用–升级

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    对比数据库结构一般需要对比数据库结构的模块,本站都会在里面有一个数据库结构对比源的sql数据库文件,如这类标志的,通常是后端有些莫名BUG,可用下图的数据库结构进行对比,可大大减少BUG的可能。

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    接下来我们用数据库软件【自行百度下载】Navicat premium,下载后安装在自己的电脑上面

    我们去宝塔控制面板新建一个数据库,将数据库结构对比源也就是上图说的那个升级用的数据库文件导入进去

    (不是用宝塔控制面板的也可以本地电脑搭建个phpStudy环境,创建数据库导入数据库结构对比源)

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    接下来我们打开navicat数据库软件,

    连接数据库【微擎站点的数据库以及新建的数据库(导入了数据库结构对比源的)】

    连接之前我们需要将服务器的3306端口打开,使用宝塔控制面板的同学,服务器开了3306端口,宝塔控制面板也要开放下3306端口,并将数据库权限改为所有人,否则等下是连接不上的。

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    连接这两个数据库

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    如下图,输入数据库信息

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    点击连接测试–提示–连接成功–点击确定,把两个数据库都连接下

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    点击工具–结构同步

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    源:对应的是我们导入了数据库结构对比源的数据库

    目标:对应的是我们微擎站点的数据库

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    大家一定要注意,默认是勾选上了【删除对象的SQL】这里我们要去掉勾选,如下图,去掉勾选后,点击比对

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    点击后进入如下界面,我们需要漫长的等待,根据自己服务器配置有关系,电脑配置有关系

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    一般的话大概需要10-30分钟不定,甚至更长,这个要看你微擎数据库表多不多。我们一定要等

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    我们继续等,等到如下图100%完成

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    选中一个数据库,然后右键,全部选择

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    必须点击“运行查询”,如果你点了数据同步,那么数据全部丢失!!!!!

    结构同步完后,如下图

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    数据库结构对比完成,关闭Navicat,将数据库权限改为本地服务器,3306端口删除

    然后进微擎后台,更新缓存,检查升级有没有哪里出错或不正常的,如有发现,恢复备份数据

    【此方法适应于各类数据库结构对比教程】

    建议大家先用测试站多熟悉熟悉,再用于正式站点操作,操作之前一定要做好备份,再次劝告大家,框架升级、模块升级之前请务必做好备份,不要节省备份的这一点时间,数据无价,万一出错了,后悔来不及。

    升级完后及时检查各方面数据。

    以上方法适合动手能力强的同学

    还有一种方法简单宝塔面板搜索插件数据结构比对工具付点毛爷爷每月省时省力

    展开全文
  • 数据库分类及主流数据库对比

    千次阅读 2019-11-11 09:52:54
    2 数据库对比 1 数据库分类 数据库根据数据结构可分为关系型数据库和非关系型数据库。非关系型数据库中根据应用场景又可分为键值(Key-Value)数据库、列存储数据库、面向文档数据库、搜索引擎数据库等。 1.1 ...

    数据库使用系列专栏:数据库使用系列文章


    目录

    1 数据库分类

    1.1 关系型数据库

    1.2 非关系型数据库

    2 数据库对比


    1 数据库分类

    数据库根据数据结构可分为关系型数据库和非关系型数据库。非关系型数据库中根据应用场景又可分为键值(Key-Value)数据库、列存储数据库、面向文档数据库、搜索引擎数据库等。

    1.1 关系型数据库

    这种类型的数据库是最古老的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式), 如图2是一个二维表的实例。通常该表第一行为字段名称,描述该字段的作用,下面是具体的数据。在定义该表时需要指定字段的名称及类型。

    图一 数据库表实例

    在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上。在大型系统中通常有多个表,且表之间有各种关系。实际使用就是通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。

    典型产品:MySQL、SqlServer、Oracle、PostgreSQL、SQLite等。

    1.2 非关系型数据库

    键值存储数据库

    键值数据库是一种非关系数据库,它使用简单的键值方法来存储数据。键值数据库将数据存储为键值对集合,其中键作为唯一标识符。

    图2 键值存储数据示意图

    如图2是某公有云的键值存储示意图,其中键包含分区键和排序键,而值包含更多的实际信息。比如实际使用是可以以学号为键,姓名、性别、年龄和班级等信息为值进行存储。实际存储形式很灵活,是业务需求自行定义即可。

    典型产品:Redis、Memcached等。

    列存储数据库

    列式存储(column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是对表中数据的存储形式的差异。

    图3 列存储数据

    如图3是传统行数据库和列数据库表中数据在磁盘上的存储形式的差异对比。对于行存储数据库,表中的数据是以行为单位逐行存储在磁盘上的;而对于列存储数据库,表中的数据则是以列为单位逐列存储在磁盘中。

    列存储解决的主要问题是数据查询问题。我们知道,平时的查询大部分都是条件查询,通常是返回某些字段(列)的数据。对于行存储数据,数据读取时通常将一行数据完全读出,如果只需要其中几列数据的情况,就会存在冗余列,出于缩短处理时间的考量,消除冗余列的过程通常是在内存中进行的。而列存储,每次读取的数据是集合的一段或者全部,不存在冗余性问题。这样,通过这种存储方式的调整,使得查询性能得到极大的提升。

    典型产品:HBase等。

    面向文档数据库

    此类数据库可存放并获取文档,可以是XML、JSON、BSON等格式,这些文档具备可述性(self-describing),呈现分层的树状结构(hierarchical tree data structure),可以包含映射表、集合和纯量值。数据库中的文档彼此相似,但不必完全相同。文档数据库所存放的文档,就相当于键值数据库所存放的“值”。文档数据库可视为其值可查的键值数据库。

    典型产品:MongDB、CouchDB等。

    图形数据库

    图形数据库顾名思义,就是一种存储图形关系的数据库。图形数据库是NoSQL数据库的一种类型,它应用图形理论存储实体之间的关系信息。关系型数据用于存储明确关系的数据,但对于复杂关系的数据存储却有些力不从心。如图4这种人物之间的关系,如果用关系型数据库则非常复杂,用图形数据库将非常简单。

    图4 图形数据库示例

    典型产品:Neo4J、InfoGr id等。

    搜索引擎存储

    搜索引擎数据库是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检索的时候才能保证性能最优。

    典型产品:Solr、Elasticsearch等。

    2 数据库对比

    几种主流关系型数据库对比:

    数据库 优势 缺点
    MySQL 1)MySQL性能卓越,服务稳定,很少出现异常宕机。
    2)MySQL开放源代码且无版权制约,自主性及使用成本低,版本更新较快。
    3)MySQL软件体积小,安装使用简单,并且易于维护,安装及维护成本低。
    4)MySQL支持多种操作系统,提供多种API接口,支持多种开发语言,特别对流行的PHP语言有很好的支持。
    数据量大时处理性能不及Oracle
    SqlServer 1)真正的客户机/服务器体系结构
    2)图形化的用户界面,使系统管理和数据库管理更加直观、简单
    3)丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地
    4)与WinNT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等,SQL Server也可以很好地与Microsoft  BackOffice产品集成。
    5)提供数据仓库功能,这个功能只在Oracle和其他昂贵的DBMS中才有。
    只能在Windows系统下运行
    Oracle

    1)Oracle 能在所有主流平台上运行 

    2)Oracle 性能高,保持开放平台下TPC-D和TPC-C世界记录   

    3)获得最高认证级别的ISO标准认证

    价格昂贵
    PostgreSQL 1)PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步。
    2)PG 性能高速度快。任何系统都有它的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降。
    3)PG 多年来在 GIS 领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG有大量字典、数组、bitmap 等数据类型。
    4)PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统
    5)PG对数据量大的文本以及SQL处理较快
     
    SQLite

    1)零配置,SQlite3不用安装,不用配置,不用启动,关闭或者配置数据库实例。当系统崩溃后不用做任何恢复操作,再下次使用数据库的时候自动恢复 

    2SQLite是被设计成轻量级,自包含的,不依赖服务进程                  

    3)采用无数据类型,所以可以保存任何类型的数据,SQLite采用的是动态数据类型,会根据存入值自动判断                                                       

    4)可移植,可运行在不同操作系统上

    数据量不宜过大,sql语句执行相比其他数据库效率较低

    几种主流非关系型数据库对比:

    数据库 优势 缺点
    Redis 1)支持内存缓存,这个功能相当于Memcached
    2)支持持久化存储,这个功能相当于MemcacheDb,ttserver
    3)数据类型更丰富。比其他key-value库功能更强
    4)支持主从集群,分布式
    5)支持队列等特殊功能
     
    Memcached 开源的、高性能的、具有分布式内存对象的纯缓存系统 不支持持久化
    HBase

    1)适合存储半结构化或非结构化数据

    2)高可用和海量数据以及很大的瞬间写入量

    3)记录很稀疏,RDBMS的行有多少列是固定的,为null的列浪费了存储空间。HBase为null的Column不会被存储,这样既节省了空间又提高了读性能。

    1)不适合于大范围扫描查询
    2)不直接支持 SQL 的语句查询
    MongoDB

    1)弱一致性(最终一致),更能保证用户的访问速度

    2)查询与索引方式灵活,是最像SQL的Nosql

    3)内置GridFS,支持大容量的存储

    4)内置Sharding,支持复制集、主备、互为主备、自动分片等特性

    5)第三方支持丰富 6)性能优越

    1)单机可靠性比较差 2)磁盘空间占用比较大

    3)大数据量持续插入,写入性能有较大波动

    架构设计有一句流行语:不以业务模型为基础的架构设计都是耍流氓。同样数据库选型也应该根据自己业务需求选择最适合自己的数据库

    展开全文
  • 内存数据库对比

    2013-10-10 15:22:32
    时下最新的四种内存数据库对比。详细介绍了各个数据库的优势和不足,以及选型标准,有很高的借鉴价值。
  • 数据库对比软件

    2013-08-16 15:50:37
    实用的数据库对比软件 支持oracle mysql sqlserver,可以比较数据库结构差异、表机构差异、数据差异、存储过程/函数差异。
  • greenplum 简介及数据库对比 。 greenplum hive infobright 对比。
  • 数据库对比工具.zip

    2019-06-21 15:54:56
    数据库对比工具SQLCompare,V10.4.8.87 x86破解版,支持SQL08,可以对比数据结构 和 数据内容,自动生成sql脚本,恢复数据结构 及 数据
  • Android 数据库对比

    千次阅读 2019-01-09 11:57:40
    Android 数据库对比 转载于:https://blog.csdn.net/u010134293/article/details/58590092 一、常见数据库介绍 GreenDao 是为Android设计的对象关系映射(ORM)工具。它提供了对象到关系型数据库SQLite的相应...

    Android 数据库对比

    转载于:https://blog.csdn.net/u010134293/article/details/58590092

    一、常见数据库介绍

    • GreenDao 是为Android设计的对象关系映射(ORM)工具。它提供了对象到关系型数据库SQLite的相应接口。为了在Android工程中使用greenDao,需要创建另一个“生成器”工程,它的任务是在你的工程域里生成具体的代码。因此相比与其它ORM框架具有出众性能。

    • LitePal 是对象关系映射(ORM)模型。它使开发者使用SQLite数据库变得非常容易。 你可以不用写一句SQL语句就可以完成大部分数据库操作,包括创建表,更新表,约束操作,聚合功能等等。

    • Afinal 是一个android的sqlite orm 和 ioc 框架。同时封装了android中的http框架,使其更加简单易用。FinalDB模块,android中的orm框架,一行代码就可以进行增删改查。支持一对多,多对一等查询。

    • ORMLite (Object Relational Mapping Lite)提供了一些轻量级持久化Java对象到SQL数据库,同时也避免了复杂性和更多的标准的ORM包的开销功能。它支持的SQL数据库使用JDBC的数量,还支持原生的Android操作系统数据库API调用sqlite。

    • SugarORM 是对象关系映射模式。不用写复杂的sql语句,而用简单的API即可完成创建和操纵数据;可以在原有的Bean上仅仅添加小的修改而复用Bean;简化而明了的数据库设计和创建过程,同时提供表的一对多的支持。

    • Realm 是用来替代sqlite的一种解决方案,它有一套自己的数据库存储引擎,比sqlite更轻量级,拥有更快的速度,并且具有很多现代数据库的特性,比如支持JSON,流式api,数据变更通知,自动数据同步,简单身份验证,访问控制,事件处理,最重要的是跨平台,目前已有Java,Objective C,Swift,React-Native,Xamarin这五种实现。

    • LiteOrm 是android上的一款数据库(ORM)框架库。速度快、体积小、性能高。开发者基本一行代码实现数据库的增删改查操作,以及实体关系的持久化和自动映射。设计原则:轻量、专注、性能优先、线程无关,专注数据及其关系存储和操作;无需工具辅助,不需要无参构造,不需要繁多注解,约定优于配置;使用极致简约,例如:db.save(u); db.query(U.class); db.deleteAll(U.class);。

    • DBFlow 综合了 ActiveAndroid, Schematic, Ollie,Sprinkles 等库的优点。同时不是基于反射,所以性能也是非常高,效率紧跟greenDAO其后。基于注解,使用apt技术,在编译过程中生成操作类,使用方式和ActiveAndroid高度相似,使用简单。无缝支持多个数据库,使用annotation processing提高速度,ModelContainer类库可以直接解析像JSON这样的数据,增加灵活性的丰富接口。

    • ActiveAndroid 是采用活动记录(Active Record)架构模式设计的适用于Android平台的轻量级ORM架构。

    二、数据库性能比较

    仔细找了一下发现 Android 平台上的数据库框架可真够多,但是有一个共同特点就是基于对象关系映射(ORM)模型的。实现的目标也都是不需要写 SQL 语句,通过对对象的操作保存和操作数据。要是从语法的简洁性来说都有自己的特点,总的来说不相上下,因此只能从数据的性能上来抉择了。下图对数据库执行性能进行了对比,测试数据来自http://www.jianshu.com/p/330bbd3b0e68

    database_option_time_compare

    从图中可以看出 Realm 的性能应该是最好的,同时它执行跨平台,且并不是采用 SQLite 的持久化引擎。

    三、Realm 数据库的使用

    Realm 官方文档:https://realm.io/docs/java/latest/

    1,环境配置

    1. 在项目的 build.gradle 加入如下代码:

      buildscript {
          repositories {
              jcenter()
          }
          dependencies {
              classpath "io.realm:realm-gradle-plugin:2.3.1"
          }
      }
      
    2. 在主工程 app 目录下的 build.gradle 的文件顶部加入如下代码:

      apply plugin: 'realm-android'
      
      •  

    2,自定义 Realm

    1. 创建数据库

      // 使用 RealmConfiguration 配置数据库
      // Realm 文件将创建在 Context.getFilesDir() 目录下,名字为 "myrealm.realm"   
      RealmConfiguration config = new RealmConfiguration.Builder()
        .name("myrealm.realm")
        .encryptionKey(getKey())
        .schemaVersion(1)
        .modules(new MySchemaModule())
        .migration(new MyMigration())
        .build();
      // 使用配置,获取一个 Realm 实例
      Realm realm = Realm.getInstance(config);
      
    2. 数据库版本升级

      // 当数据表结构改变时,删除数据库
      RealmConfiguration config = new RealmConfiguration.Builder()
          .deleteRealmIfMigrationNeeded()
          .build()
      
      // 更新数据
      RealmConfiguration config = new RealmConfiguration.Builder()
          .schemaVersion(2) // 数据表改变时,必须修改版本号
          .migration(new Migration()) // 设置在合并数据库时的修改
          .build()
      
      public class Migration implements RealmMigration {
          @Override
          public void migrate(final DynamicRealm realm, long oldVersion, long newVersion) {
              // ...
          }
      }   
      

    3,创建实体表

    1. 创建一个实体类

      public class Dog extends RealmObject {
          private String name;
          private int age;
      
          @PrimaryKey
          private String id;
      
          // ... 设置和获取方法省略
      }
      
    2. 当包含多个时用 RealmList,如一个联系人包括多个邮件地址,如下:

      public class Contact extends RealmObject {
          public String name;
          public RealmList<Email> emails;
      }
      
      public class Email extends RealmObject {
          public String address;
          public boolean active;
      }
      
    3. 支持的数据类型: 
      boolean, byte, short, int, long, float, double, String, Date and byte[]

    4. 注解说明

      • @PrimaryKey

        1. 设置主键,字段类型必须是String、 integer、byte、short、 int、long 以及它们的封装类Byte, Short, Integer, and Long
        2. 使用了该注解之后可以使用copyToRealmOrUpdate()方法,通过主键查询它的对象,如果查询到了,则更新它,否则新建一个对象来代替。
        3. 使用了该注解将默认设置 @index 注解
        4. 使用了该注解之后,创建和更新数据将会慢一点,查询数据会快一点。
      • @Required 
        数据不能为空

      • @Ignore 
        忽略,即该字段不被存储到本地

      • @Index 
        为这个字段添加一个搜索引擎,这将使插入数据变慢、数据增大,但是查询会变快。建议在需要优化读取性能的情况下使用。

    4,添加

    1. 通过 Realm 新建一个对象,并进行存储

      realm.beginTransaction();
      User user = realm.createObject(User.class); // 通过 Realm 新建一个对象
      user.setName("John");
      user.setEmail("john@corporation.com");
      realm.commitTransaction();
      
    2. 复制一个对象到Realm数据库(与第一种方式的不同之处在于 User 对象是 new 出来的)

      User user = new User("John");
      user.setEmail("john@corporation.com");
      
      // Copy the object to Realm. Any further changes must happen on realmUser
      realm.beginTransaction();
      realm.copyToRealm(user);
      realm.commitTransaction();
      
    3. 使用事务块

      final User user = new User("John");
      user.setEmail("john@corporation.com");
      
      mRealm.executeTransaction(new Realm.Transaction() {
                  @Override
                  public void execute(Realm realm) {
      
                  realm.copyToRealm(user);
      
                  }
              });
      

    注:Realm 的增删改查操作都必须是在事务中进行。

    5,删除

        final RealmResults<Dog> dogs = mRealm.where(Dog.class).findAll();
    
        mRealm.executeTransaction(new Realm.Transaction() {
            @Override
            public void execute(Realm realm) {
    
                Dog dog=dogs.get(5);
                dog.deleteFromRealm();
                //删除第一个数据
                dogs.deleteFirstFromRealm();
                //删除最后一个数据
                dogs.deleteLastFromRealm();
                //删除位置为1的数据
                dogs.deleteFromRealm(1);
                //删除所有数据
                dogs.deleteAllFromRealm();
            }
        });
    

    或使用 beginTransaction() 和 commitTransaction() 的方式进行操作也是一样的。

    6,修改

        Dog dog = mRealm.where(Dog.class).equalTo("id", id).findFirst();
        mRealm.beginTransaction();
        dog.setName(newName);
        mRealm.commitTransaction();
    

    7,查询

    1. 全部查询,查询结果为 RealmResults,可以使用 mRealm.copyFromRealm(dogs) 方法将它转为 List

      public List<Dog> queryAllDog() {
          Realm  mRealm = Realm.getDefaultInstance();
          RealmResults<Dog> dogs = mRealm.where(Dog.class).findAll();
          return mRealm.copyFromRealm(dogs);
      }
      
    2. 条件查询

      public Dog queryDogById(String id) {
          Realm  mRealm = Realm.getDefaultInstance();
          Dog dog = mRealm.where(Dog.class).equalTo("id", id).findFirst();
          return dog;
      }
      
    3. 支持的条件查询语句

      • between(), greaterThan(), lessThan(), greaterThanOrEqualTo() & lessThanOrEqualTo()
      • equalTo() & notEqualTo()
      • contains(), beginsWith() & endsWith()
      • isNull() & isNotNull()
      • isEmpty() & isNotEmpty()
    4. 其它对查询结果的操作

      • sort()
      • sum()
      • min()
      • max()
      • average()

    8,异步操作

    大多数情况下,Realm的增删改查操作足够快,可以在UI线程中执行操作。但是如果遇到较复杂的增删改查,或增删改查操作的数据较多时,就可以子线程进行操作。

    RealmAsyncTask asyncTask = mRealm.executeTransactionAsync(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            // ... do something
        }
    }, new Realm.Transaction.OnSuccess() {
        @Override
        public void onSuccess() {
    
        }
    }, new Realm.Transaction.OnError() {
        @Override
        public void onError(Throwable error) {
    
        }
    });
    
    • 在窗体销毁时,记得要取消异步任务:
    protected void onDestroy() {
        if (asyncTask!=null && !asyncTask.isCancelled()){
            asyncTask.cancel();
        }
    }
    

    9,数据变更通知

    private RealmChangeListener callback = new RealmChangeListener() {
        @Override
        public void onChange(RealmResults<User> results) {
            // called once the query complete and on every update
        }
    };
    
    public void onStart() {
        RealmResults<User> result = realm.where(User.class).findAllAsync();
        result.addChangeListener(callback);
    }
    

    记得取消监听,在 Fragment 或 Activity 退出时,避免内存泄露

    public void onStop () {
        result.removeChangeListener(callback); // 移除指定的监听
        // 或
        result.removeChangeListeners(); // 移除注册的所有监听
    }
    

    这里列举了 Realm 使用的大部分方法,还有部分待后续补充。

     

    展开全文
  • mssql数据库对比工具

    2013-12-07 10:02:39
    这是一个数据库对比工具。可以对比两个数据库之间表、存储过程、视图、触发器等之间有什么不同。并且可以生成sql,同步两个数据库。支持不同版本的数据库。下载下来就知道有多好用!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,475
精华内容 6,190
关键字:

数据库对比