Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Program som utför ad hoc-analys skapar ofta SQL-instruktioner vid körningstid. Ett kalkylblad kan till exempel göra det möjligt för en användare att välja kolumner som data ska hämtas från:
// SQL_Statements_Constructed_at_Run_Time.cpp
#include <windows.h>
#include <stdio.h>
#include <sqltypes.h>
int main() {
SQLCHAR *Statement = 0, *TableName = 0;
SQLCHAR **TableNamesArray, **ColumnNamesArray = 0;
BOOL *ColumnSelectedArray = 0;
BOOL CommaNeeded;
SQLSMALLINT i = 0, NumColumns = 0;
// Use SQLTables to build a list of tables (TableNamesArray[]). Let the
// user select a table and store the selected table in TableName.
// Use SQLColumns to build a list of the columns in the selected table
// (ColumnNamesArray). Set NumColumns to the number of columns in the
// table. Let the user select one or more columns and flag these columns
// in ColumnSelectedArray[].
// Build a SELECT statement from the selected columns.
CommaNeeded = FALSE;
Statement = (SQLCHAR*)malloc(8);
strcpy_s((char*)Statement, 8, "SELECT ");
for (i = 0 ; i = NumColumns ; i++) {
if (ColumnSelectedArray[i]) {
if (CommaNeeded)
strcat_s((char*)Statement, sizeof(Statement), ",");
else
CommaNeeded = TRUE;
strcat_s((char*)Statement, sizeof(Statement), (char*)ColumnNamesArray[i]);
}
}
strcat_s((char*)Statement, 15, " FROM ");
// strcat_s((char*)Statement, 100, (char*)TableName);
// Execute the statement . It will be executed once, do not prepare it.
// SQLExecDirect(hstmt, Statement, SQL_NTS);
}
En annan klass med program som ofta konstruerar SQL-instruktioner under körning är programutvecklingsmiljöer. De instruktioner som de skapar är dock hårdkodade i det program som de skapar, där de vanligtvis kan optimeras och testas.
Program som konstruerar SQL-instruktioner vid körning kan ge användaren stor flexibilitet. Som du kan se i föregående exempel, som inte ens stödde sådana vanliga åtgärder som WHERE-satser , ORDER BY-satser eller kopplingar, är det mycket mer komplext att konstruera SQL-instruktioner vid körning än hårdkodningssatser. Dessutom är det problematiskt att testa sådana program eftersom de kan konstruera ett godtyckligt antal SQL-instruktioner.
En potentiell nackdel med att konstruera SQL-instruktioner under körning är att det tar betydligt längre tid att konstruera en instruktion än att använda hårdkodade instruktioner. Lyckligtvis är detta sällan ett bekymmer. Sådana program tenderar att vara användargränssnittsintensiva, och den tid som programmet ägnar åt att konstruera SQL-instruktioner är vanligtvis liten jämfört med den tid som användaren lägger på att ange kriterier.