Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    39

    [ASP.NET C#] Limitare i valori accettati nei parametri di una funzione

    Saluti,

    spero riusciate ad aiutarmi a risolvere il seguente problema:

    Ho una funzione di questo tipo:

    codice:
    public string CreaStringa(string comparisonOperator)
    {
        string queryString = "SELECT * FROM tabelle WHERE campo " + comparisonOperator + " valore";
        return queryString;
    }
    Il parametro comparisonOperator mi deve accettare solo gli operatori di confronto per le query sql (=, <>, <, <=, >, >=, LIKE). Come posso fare?

  2. #2
    Utente di HTML.it L'avatar di Franz78
    Registrato dal
    Sep 2004
    Messaggi
    730
    scusa non ho capito..
    ma se passi il carattere come stringa non funziona?

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    39
    il mio problema è vincolare il valore del parametro esclusivamente a questi valori:

    (=, <>, <, <=, >, >=, LIKE)

    altri errori non devono essere accettati.

  4. #4
    Utente di HTML.it L'avatar di Franz78
    Registrato dal
    Sep 2004
    Messaggi
    730
    scusa ma forse non capisco io....
    come li passi il parametro ?
    tramite interfaccia ?
    utilizza una dropdown..... un radiobuttonlist..controlli cosi.... vincolando in questo modo i valori che ti interessano.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    39
    la chiamata dovrebbe all'incirca essere la seguente:

    codice:
    string queryString = CreaStringa(">");
    codice:
    Poi utilizzo queryString: 
    
            MySqlConnection connDataBase = MySqlServerConnection();
            MySqlCommand commandDataBase = new MySqlCommand(queryString, connDataBase);
            MySqlDataAdapter adapterDataBase = new MySqlDataAdapter(commandDataBase);
    
            DataSet dsDataBase = new DataSet();
    
            try
            {
                connDataBase.Open();
                adapterDataBase.Fill(dsDataBase, tableName);
                return dsDataBase;
            }
            catch (MySqlException ex)
            {
                throw ex;
            }
            finally
            {
                if (connDataBase.State == ConnectionState.Open) { connDataBase.Close(); }
            }
    Quando richiamo CreaStringa(valore) vorrei che valore sia solo uno di quelli da me stabiliti e non un altro valore (esempio "likes" oppure "<<"). Spero di essere stato chiaro.

    Ho pensato anche di utilizzare MySqlParameters ma non posso definire proprio gli operatori di confronto.

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Usa una Enumeration. Attenzione che i caratteri ">" "<" etc non sono accettati.
    Potresti distinguere all'interno della funzione...

    http://www.4guysfromrolla.com/articles/042804-1.aspx

    codice:
        Public Enum OperatoreConfronto
            Maggiore '>
            Minore '<
            MaggioreUguale '>=
            MinoreUguale '<=
            Diverso '<>
            Uguale '=
            Come 'Like
        End Enum
    
           Private Function CreaStringa(ByVal OP As OperatoreConfronto) As String
            Dim OperatoreReale As String
            Select Case OP
                Case OperatoreConfronto.Come
                    OperatoreReale = "LIKE"
                Case OperatoreConfronto.Diverso
                Case OperatoreConfronto.Maggiore
                Case OperatoreConfronto.MaggioreUguale
                Case OperatoreConfronto.Minore
                Case OperatoreConfronto.MinoreUguale
                Case OperatoreConfronto.Uguale
            End Select
            Dim queryString As String = "SELECT * FROM tabelle WHERE campo " + OperatoreReale + " valore"
            Return queryString
        End Function

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    39
    Grazie, era proprio quello che cercavo. Avevo provato ad usare un enumeratore ma mi andava in errore, non sapevo che > e < non si potessero usare.

    Con l'occasione ho capito come funzione MySqlParameter.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.