SQL 支持 NCache

在现实生活中的复杂场景中,您的应用程序通常需要根据特定属性获取数据,而不是通过主键进行搜索。 使用 SQL 查询数据使您可以更轻松地在运行时根据自定义逻辑从数据库中检索数据。

NCache 支持SQL查询机制,让您根据给定的条件搜索缓存并返回所需的结果集。 NCache 使用非常接近原生 SQL 结构化语言的查询语言,这使您可以轻松查询索引缓存数据。

 

查询方法

NCache 使用类似于 ADO.NET 接口的查询接口,支持各种查询方法从缓存中搜索或删除数据。 以下是支持的一些最重要的查询方法 NCache.

  • 执行阅读器 用于搜索数据并返回键值对。 使用 ExecuteReader 方法时,您可以指定是只返回键还是同时返回键和关联数据(作为整体或以块的形式)。
  • string query = "SELECT * FROM FQN.Product WHERE ProductID > ?";
    var queryCommand = new QueryCommand(query);
    queryCommand.Parameters.Add("ProductID",50000);
    ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand, false, 0);
    if (reader.FieldCount > 0)
    {
        while (reader.Read())
        {
            string result = reader.GetValue<string>(0);
        }
    }
    String query = "SELECT * FROM FQN.Product WHERE ProductID > ?";
    QueryCommand queryCommand = new QueryCommand(query);
    HashMap<String, Object> parameters = new HashMap<>();
    parameters.put("ProductID", 50000);
    queryCommand.getParameters().putAll(parameters);
    CacheReader cacheReader = cache.getSearchService().executeReader(queryCommand);
    if (cacheReader.getFieldCount() > 0) {
        while (cacheReader.read()) {
            cacheReader.getString(0);
    }
  • 执行非查询 使用 SQL 语句删除条目时使用。 它返回删除的行数作为结果。
  • 执行标量 通常用于查询需要返回单个值的计数和聚合操作。
 

SQL 投影

NCache 允许您指定要针对 SQL 查询进行投影的列。 下面提到的是支持的基本、最常用的投影 NCache.

  • *: 在查询中使用时,它返回配置时定义的指定对象的所有索引属性的值。
  • $VALUE$: 当在查询中使用时,它会返回包含索引和非索引属性的整个对象的键。
  • 聚合函数: 这些函数包括 SUM()、COUNT()、MIN/MAX() 等函数。您可以将聚合函数与其他提供的 SQL 投影的任意组合一起使用。
  • SELECT COUNT(*) FROM FQN.Product WHERE UnitsInStock > ?

请参阅 SQL 搜索对象 获取更多信息.

 

SQL 杂项运算符

这些运算符在整个 SQL 数据库中不断使用和重复使用,以处理和操作数据。 NCache 支持各种 SQL 运算符,使您可以有效地获得所需的结果。 这些功能是:

  • 通过...分组: 通过对符合给定条件的所有键进行分组来返回值。
  • 订购: 以排序形式返回值。
  • 约会时间: 搜索有关特定日期或时间的缓存。
  • string query = "SELECT OrderID FROM FQN.Order WHERE OrderDate = ?";
    var queryCommand = new QueryCommand(query);
    DateTime orderDate = new DateTime(2022, 01, 01);
    queryCommand.Parameters.Add("OrderDate", orderDate);
    ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand);
    if (reader.FieldCount > 0)
    {
        while (reader.Read())
        {
            int orderID = reader.GetValue<int>("OrderID");
            Console.WriteLine($"Order: {orderID} was placed on 1st January, 2022.");
        }
    }
    else
    {
        Console.WriteLine($"No orders were placed on 1st January 2022.");
    }
    
    String query = "SELECT OrderID FROM FQN.Order WHERE OrderDate = ?";
    QueryCommand queryCommand = new QueryCommand(query);
    
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date orderDate;
    orderDate = sdf.parse("2022-01-01");
    HashMap<String, Object> parameters = new HashMap<>();
    parameters.put("OrderDate", orderDate);
    queryCommand.getParameters().putAll(parameters);
    
    CacheReader cacheReader = cache.getSearchService().executeReader(queryCommand);
    if (cacheReader.getFieldCount() > 0) {
        while (cacheReader.read()) {
    
            int orderID = cacheReader.getInt(cacheReader.getOrdinal("OrderID"));
            System.out.println("Order: " + orderID + " was placed on 1st January, 2022.");
        }
    } else {
        System.out.println("No orders were placed on 1st January 2022.");
    }
 

查询中的 SQL 运算符

SQL 运算符是 WHERE 子句中的保留关键字,用于执行逻辑和比较操作。 NCache 为您提供以下SQL运算符的支持,以根据自定义条件查询您的数据。

  • 中: 此操作有助于在缓存中搜索所有提供的属性。 类似地,您可以使用 NOT IN 运算符来搜索子句中提供的属性以外的属性。
  • SELECT ProductName, UnitsAvailable From FQN.Product WHERE Category IN ('Beverages', 'Confections')
  • 喜欢: 此操作搜索列中的特定模式。 LIKE 运算符支持两种通配符:
    • *: 替代字符串中的零个或多个字符。
    • ? : 字符串中单个字符的替代。
    • 同样,您有 不喜欢 运营商。

接下来做什么?

评论 NCache 特征
下载 NCache
请求个性化的现场演示

联系我们

联系电话
©版权所有 Alachisoft 2002 - 版权所有。 NCache 是 Diyatech Corp. 的注册商标。