In realen, komplexen Szenarien muss Ihre Anwendung häufig Daten basierend auf bestimmten Attributen abrufen, anstatt den Primärschlüssel zu durchsuchen. Durch das Abfragen Ihrer Daten mithilfe von SQL können Sie zur Laufzeit einfacher Daten aus Ihrer Datenbank abrufen, die auf Ihrer benutzerdefinierten Logik basieren.
NCache unterstützt einen SQL-Abfragemechanismus, mit dem Sie Ihren Cache nach einem bestimmten Kriterium durchsuchen und die erforderliche Ergebnismenge zurückgeben können. NCache verwendet eine Abfragesprache, die der nativen strukturierten SQL-Sprache sehr nahe kommt, was es Ihnen leicht macht, Ihre indizierten, zwischengespeicherten Daten abzufragen.
NCache verwendet eine der ADO.NET-Schnittstelle ähnliche Abfrageschnittstelle, um verschiedene Abfragemethoden zum Suchen oder Löschen von Daten aus dem Cache zu unterstützen. Hier sind einige der wichtigsten Abfragemethoden, die in unterstützt werden 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 ermöglicht Ihnen die Angabe von Spalten, die anhand Ihrer SQL-Abfrage projiziert werden sollen. Nachfolgend sind die grundlegenden und am häufigsten verwendeten Projektionen aufgeführt, die unterstützt werden NCache.
SELECT COUNT(*) FROM FQN.Product WHERE UnitsInStock > ?
Beziehen auf SQL-Suche nach Objekt um mehr zu erfahren.
Diese Operatoren werden in der gesamten SQL-Datenbank zum Verarbeiten und Bearbeiten von Daten verwendet und wiederverwendet. NCache unterstützt verschiedene SQL-Operatoren, mit denen Sie effizient das gewünschte Ergebnis erzielen können. Diese Funktionen sind:
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-Operatoren sind reservierte Schlüsselwörter in der WHERE-Klausel, um logische Operationen und Vergleichsoperationen auszuführen. NCache bietet Ihnen die Unterstützung der folgenden SQL-Operatoren, um Ihre Daten nach benutzerdefinierten Bedingungen abzufragen.
SELECT ProductName, UnitsAvailable From FQN.Product WHERE Category IN ('Beverages', 'Confections')