Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Come utilizzare le variabili all'interno di query sql

    Ciao,

    in una query sql qual e' la giusta sintassi per utilizzare il valore contenuto in una variabile dichiarata in c sharp.
    Io ho strutturato la query nel seguente modo ma non riesco a capire se sia corretto o meno il modo in cui richiamo la variabile dopo il WHERE.

    codice:
    string flower = "rosa";
    string query="";
    
    if(query == ""){
        query="SELECT * FROM flowerTable WHERE flowerColumn = flower";
    }
    flowerColumn rappresenta una colonna della tabella flowerTable, ed in questa colonna sono indicati, a seconda del record, diversi valori, del tipo "rosa", "viola", "primula".

    NB. sto sviluppando usando Visual Studio 2015 con framework 4.6.1,aspnet e c sharp

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    due cose:

    - Questo non è il modo corretto di fare query, semplicemente perche' se ti arriva una stringa con un apice, si sballa la query (uno dei motivi principali). Il modo corretto sono I PARAMETRI.
    https://goo.gl/EHrn92

    - Anche se volessi utilizzare il tuo metodo, hai sbagliato a scriverlo. E':

    codice:
    string flower = "rosa";
    string query = "SELECT * FROM flowerTable WHERE flowerColumn=' " + flower + "'";
    

    Ma questo ripeto, non è il metodo corretto.


    E comunque per ottimizzare le performance sono consigliate le Stored Procedures.

    Ultima modifica di djciko; 26-04-2016 a 15:47

  3. #3
    Ho risolto il problema utilizzando OleDbParameter, in questo modo:
    codice:
     OleDbConnection cnn = new OleDbConnection();
                    cnn.ConnectionString = ...;
    
    
                    //imposto il comando
                    OleDbCommand command = new OleDbCommand();
                    command.Connection = cnn;
                    command.CommandText = query;
                    command.CommandType = CommandType.Text;
    
    
                    //aggiungo i parametri  
                        OleDbParameter pParameter= command.Parameters.Add("@Parameter", OleDbType.VarChar, 50);
                        pParameter.Value = getParameter();
                    }
    Mentre nella query per passare il parametro ho utilizzato il ? , in questo modo:
    codice:
    string query = "SELECT * FROM tabel WHERE column1=?";

  4. #4
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    non hai bisogno di creare un oggetto pParameter di tipo Oledbparameter, puoi abbreviare indicando solo
    command.Parameters.Addwithvalue("@Parameter",getPa rameter());
    e poi la query scrivila così
    query = "SELECT * FROM tabel WHERE column1=@Parameter";
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  5. #5
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    Scusa hai ragione: con Oledb non puoi usare i parametri per nome nella query quindi va bene come l'avevi scritta tu ...
    Peraltro se il db è SQL ti consiglierei di usare SqlClient anzichè Oledb
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

Tag per questa discussione

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 © 2025 vBulletin Solutions, Inc. All rights reserved.