Em cenários complexos da vida real, seu aplicativo geralmente precisa buscar dados com base em atributos específicos, em vez de pesquisar na chave primária. Consultar seus dados usando SQL facilita a recuperação de dados do seu banco de dados com base em sua lógica personalizada em tempo de execução.
NCache suporta um mecanismo de consulta SQL para permitir que você pesquise seu cache de acordo com um determinado critério e retorne o conjunto de resultados necessário. NCache usa uma linguagem de consulta muito próxima da linguagem estruturada SQL nativa, o que facilita a consulta de seus dados indexados em cache.
NCache usa interface de consulta semelhante à interface ADO.NET para oferecer suporte a vários métodos de consulta para pesquisar ou excluir dados do cache. Aqui estão alguns dos métodos de consulta mais importantes suportados em NCache.
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);
}
NCache permite que você especifique colunas para projetar em sua consulta SQL. A seguir mencionadas são as projeções básicas e mais comumente usadas suportadas em NCache.
SELECT COUNT(*) FROM FQN.Product WHERE UnitsInStock > ?
Consulte Pesquisa SQL para Objeto para obter mais informações.
Esses operadores são usados e reutilizados em todo o banco de dados SQL para processamento e manipulação de dados. NCache suporta vários operadores SQL que permitem obter o resultado desejado de forma eficiente. Essas funções são:
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.");
}
Os operadores SQL são palavras-chave reservadas na cláusula WHERE para realizar operações lógicas e de comparação. NCache fornece suporte dos seguintes operadores SQL para consultar seus dados de acordo com condições personalizadas.
SELECT ProductName, UnitsAvailable From FQN.Product WHERE Category IN ('Beverages', 'Confections')