Partager via


Instructions SQL entrées par l’utilisateur

Les applications qui effectuent une analyse ad hoc permettent également généralement à l’utilisateur d’entrer des instructions SQL directement. Par exemple :

SQLCHAR *     Statement, SqlState[6], Msg[SQL_MAX_MESSAGE_LENGTH];  
SQLSMALLINT   i, MsgLen;  
SQLINTEGER    NativeError;  
SQLRETURN     rc1, rc2;  
  
// Prompt user for SQL statement.  
GetSQLStatement(Statement);  
  
// Execute the statement directly. Because it will be executed only once,  
// do not prepare it.  
rc1 = SQLExecDirect(hstmt, Statement, SQL_NTS);  
  
// Process any errors or returned information.  
if ((rc1 == SQL_ERROR) || rc1 == SQL_SUCCESS_WITH_INFO) {  
   i = 1;  
   while ((rc2 = SQLGetDiagRec(SQL_HANDLE_STMT, hstmt, i, SqlState, &NativeError,  
         Msg, sizeof(Msg), &MsgLen)) != SQL_NO_DATA) {  
      DisplayError(SqlState, NativeError, Msg, MsgLen);  
      i++;  
   }  
}  

Cette approche simplifie le codage des applications ; l’application s’appuie sur l’utilisateur pour générer l’instruction SQL et sur la source de données pour case activée la validité de l’instruction. Étant donné qu’il est difficile d’écrire une interface utilisateur graphique qui expose correctement les complexités de SQL, il peut être préférable de demander à l’utilisateur d’entrer le texte de l’instruction SQL. Toutefois, cela oblige l’utilisateur à connaître non seulement SQL, mais également le schéma de la source de données interrogée. Certaines applications fournissent une interface utilisateur graphique par laquelle l’utilisateur peut créer une instruction SQL de base et fournir une interface texte avec laquelle l’utilisateur peut le modifier.