none
istruzione select from dropdownlist RRS feed

  • Domanda

  • salve a tutti sto cercando di creare un'istruzione sql che mi restituisca i valori di una tabella il cui nome è all'inteno di un'altra.

    in pratica con un dropdownlist1 elenco una serie di nomi presenti in una tabella

    select colonna1 from tabella 1

    i dati di questa tabella rappresentano dei nomi di altre tabelle i quali risultati devono uscire in una dropdownlistlist2 le tabelle hanno una colonna ciascuno con lo stesso nome (colonna)

    quindi l'istruzione dovrebbe essere 

    select colonna from dropdownlist1.text

    il problema è che non riesco a capire come scrivere correttamente questa istruzione

    qualcuno mi puo aiutare?
    domenica 16 ottobre 2011 12:57

Risposte

  • Ciao,

    L'unica soluzione è quella di utilizzare la generazione di SQL dinamico, essendo ben consapevole dei problemi di sicurezza a cui puoi andare incontro. Detto questo, potresti usare una stored procedure di questo tipo:

     

    CREATE PROCEDURE dbo.proc_GetTableData
    (
    	@tableName sysname
    )
    AS
    	DECLARE @cmd nvarchar(100) = 'SELECT * FROM ' + QUOTENAME(@tableName)
    	EXEC sp_executesql @cmd
    	
    

     

    Passando alla stored procedure il valore selezionato nella tua dropdown, dovresti ottenere ciò che chiedi.
    Per maggiori informazioni sui problemi di sicurezza (SQL Injection) che questo metodo comporta, ti consiglio di dare un'occhiata a questo articolo:

    http://www.sommarskog.se/dynamic_sql.html

    HTH,

     


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org

    domenica 16 ottobre 2011 21:21

Tutte le risposte

  • Ciao,

    L'unica soluzione è quella di utilizzare la generazione di SQL dinamico, essendo ben consapevole dei problemi di sicurezza a cui puoi andare incontro. Detto questo, potresti usare una stored procedure di questo tipo:

     

    CREATE PROCEDURE dbo.proc_GetTableData
    (
    	@tableName sysname
    )
    AS
    	DECLARE @cmd nvarchar(100) = 'SELECT * FROM ' + QUOTENAME(@tableName)
    	EXEC sp_executesql @cmd
    	
    

     

    Passando alla stored procedure il valore selezionato nella tua dropdown, dovresti ottenere ciò che chiedi.
    Per maggiori informazioni sui problemi di sicurezza (SQL Injection) che questo metodo comporta, ti consiglio di dare un'occhiata a questo articolo:

    http://www.sommarskog.se/dynamic_sql.html

    HTH,

     


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org

    domenica 16 ottobre 2011 21:21
  • Ciao jetri,

    Sei riuscito a dare uno sguardo a quanto proposto da Alberto? Ti ha aiutato per risolvere?

     

    Grazie in anticipo della tua risposta,


    Irina Turcu

    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e farli aumentare la conoscenza sui prodotti e le tecnologie Microsoft.

    LinkedIn

    giovedì 27 ottobre 2011 11:51