Implementer variabler i forespørgsler
Vi kan implementere mange almindelige forespørgsler på tværs af produkter på SDK-siden og kan tilføje filtre for at forhindre, at forespørgslerne eksploderer i resultatstørrelse og kompleksitet. Ved hjælp af de tilgængelige klasser og metoder i SDK'et kan vi tilføje forespørgselsparametre for hurtigt at justere værdierne i et WHERE filter for en SQL-forespørgsel.
Lad os se på et eksempel på en SQL-forespørgsel, der bruger et JOIN og et WHERE filter:
SELECT
p.name,
t.name AS tag
FROM
products p
JOIN
t IN p.tags
WHERE
p.price > 500
I C#opretter vi typisk en forespørgselsdefinition ved hjælp af følgende syntaks med værdien 500 hard-coded i en strengværdi:
string sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price > 500"
QueryDefinition query = new (sql);
Men ved hjælp af . WithParameter(streng, streng) flydende metode kan du føje parametre til forespørgslen, hvilket gør det nemmere at konfigurere parametre i forespørgslen:
string sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price > @lower"
QueryDefinition query = new (sql)
.WithParameter("@lower", 500);
Du kan endda bruge flere parametre i mere komplekse forespørgsler:
string sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price >= @lower AND p.price <= @upper"
QueryDefinition query = new (sql)
.WithParameter("@lower", 500)
.WithParameter("@upper", 1000);
I Python vil vi typisk oprette en forespørgselsdefinition ved hjælp af følgende syntaks med værdien 500 hårdkodet i en strengværdi:
query_text = "SELECT p.name, t AS tag FROM products p JOIN t IN p.tags WHERE p.price > 500"
query = {"query": query_text}
Men ved at bruge parametre til forespørgslen dynamisk kan vi justere filterværdierne på kørselstidspunktet WHERE . Sådan tilføjer du en parameter ved hjælp af Python SDK:
query_text = "SELECT p.name, t AS tag FROM products p JOIN t IN p.tags WHERE p.price > @lower"
query = {
"query": query_text,
"parameters": [
{"name": "@lower", "value": 500}
]
}
Du kan endda bruge flere parametre i mere komplekse forespørgsler:
query_text = (
"SELECT p.name, t AS tag "
"FROM products p JOIN t IN p.tags "
"WHERE p.price >= @lower AND p.price <= @upper"
)
query = {
"query": query_text,
"parameters": [
{"name": "@lower", "value": 500},
{"name": "@upper", "value": 1000}
]
}
I JavaScript opretter vi typisk en forespørgselsdefinition ved hjælp af følgende syntaks med værdien 500 hårdkodet i en strengværdi:
const sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price > 500";
Men ved at bruge parametre til forespørgslen dynamisk kan vi justere filterværdierne på kørselstidspunktet WHERE . Sådan tilføjer du en parameter ved hjælp af JavaScript SDK:
const sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price > @lower";
const querySpec = {
query: sql,
parameters: [
{ name: "@lower", value: 500 }
]
};
Du kan endda bruge flere parametre i mere komplekse forespørgsler:
const sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price >= @lower AND p.price <= @upper";
const querySpec = {
query: sql,
parameters: [
{ name: "@lower", value: 500 },
{ name: "@upper", value: 1000 }
]
};
Fordele ved parameteriserede forespørgsler
- Forbedret sikkerhed: Hjælper med at forhindre SQL-injektionsangreb.
- Fleksibilitet: Giver dig mulighed for at ændre forespørgselsfiltre dynamisk uden at ændre SQL-forespørgselsstrukturen.
- Genbrug af kode: Gør det nemmere at genbruge forespørgselsdefinitioner på tværs af flere forespørgsler med forskellige parameterværdier.