Dans des scénarios complexes réels, votre application doit souvent récupérer des données en fonction d'attributs particuliers plutôt que de rechercher via la clé primaire. L'interrogation de vos données à l'aide de SQL vous permet de récupérer plus facilement les données de votre base de données en fonction de votre logique personnalisée au moment de l'exécution.
NCache prend en charge un mécanisme de requête SQL pour vous permettre de rechercher votre cache selon un critère donné et de renvoyer l'ensemble de résultats requis. NCache utilise un langage de requête très proche du langage structuré SQL natif, ce qui vous permet d'interroger facilement vos données indexées en cache.
NCache utilise une interface de requête similaire à l'interface ADO.NET pour prendre en charge diverses méthodes de requête pour rechercher ou supprimer des données du cache. Voici quelques-unes des méthodes de requête les plus importantes prises en charge dans 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 vous permet de spécifier les colonnes à projeter sur votre requête SQL. Ci-dessous sont mentionnées les projections de base les plus couramment utilisées prises en charge dans NCache.
SELECT COUNT(*) FROM FQN.Product WHERE UnitsInStock > ?
Reportez-vous à Recherche SQL d'un objet pour plus d'information.
Ces opérateurs sont utilisés et réutilisés dans toute la base de données SQL pour traiter et manipuler les données. NCache prend en charge divers opérateurs SQL qui vous permettent d'obtenir efficacement le résultat souhaité. Ces fonctions sont :
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.");
}
Les opérateurs SQL sont des mots clés réservés dans la clause WHERE pour effectuer des opérations logiques et de comparaison. NCache vous fournit la prise en charge des opérateurs SQL suivants pour interroger vos données selon des conditions personnalisées.
SELECT ProductName, UnitsAvailable From FQN.Product WHERE Category IN ('Beverages', 'Confections')