Dichiarare da codice una variabile scalare: come?

domenica 03 dicembre 2006 - 20.32

Giovanni_3478 Profilo | Senior Member

Salve

Ho scritto questo codice nel codebehind

Dim cnn As New SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Giannicola\codeName_Mantle\App_Data\ASPNETDB.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True")

Dim cmd2 As New SqlClient.SqlDataAdapter("SELECT link_ita FROM software_traduzioni WHERE (categoria = N'parti del software') AND (categorie_parent = @software)", cnn)

Dim ds As New DataSet()

cmd2.Fill(ds, "parti_software")

per creare una connessione , creare un dataset, e riempire il dataset con l'SqlDataAdapter.

Ora: nella select dell'SqlDataAdapter ho inserito un riferimento ad una variabile scalare:
voglio che la select individuasse quei record
dove il campo categorie_parent sia uguale ad un valore della querystring.

Quale sintassi bisogna usare per dichiarare da codice una variabile scalare?

totti240282 Profilo | Guru

Dai un'occhiata all'utilizzio dei parametri ,oppure puoi concatenare le variabili nella query sql.
C'è solo un capitano !!!!!!

alx_81 Profilo | Guru

>Salve
Ciao!

>
>Ho scritto questo codice nel codebehind
>
>Dim cnn As New SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Giannicola\codeName_Mantle\App_Data\ASPNETDB.MDF;Integrated
>Security=True;Connect Timeout=30;User Instance=True")
>
>Dim cmd2 As New SqlClient.SqlDataAdapter("SELECT link_ita FROM
>software_traduzioni WHERE (categoria = N'parti del software')
>AND (categorie_parent = @software)", cnn)
>
> Dim ds As New DataSet()
>
> cmd2.Fill(ds, "parti_software")
>
>per creare una connessione , creare un dataset, e riempire il
>dataset con l'SqlDataAdapter.
>
>Ora: nella select dell'SqlDataAdapter ho inserito un riferimento
>ad una variabile scalare:
>voglio che la select individuasse quei record
>dove il campo categorie_parent sia uguale ad un valore della
>querystring.
>
>Quale sintassi bisogna usare per dichiarare da codice una variabile
>scalare?
>

Dunque..
per ottenere il valore del querystring fai così:

Dim software as int32

software = Request.Querystring("quellochetiserve")

una volta che hai la variabile, devi aggiungere al tuo codice la creazione dei parametri per il comando..
Quindi, devi usare l'oggetto command e definire dei parametri popolando la collection parameters..

>Oppure puoi concatenare le variabili nella query sql.

Attenzione a questa affermazione..
guardate questo link:

http://msdn2.microsoft.com/en-us/library/hdb58b2f.aspx

Alx81 =)

http://blogs.dotnethell.it/suxstellino

Giovanni_3478 Profilo | Senior Member

La concatenazione l'avevo già provata con esito negativo

Ho provato a cercare con il tuo input sulla msdn

Credo di aver risolto:
Dim parti_software As String = Request.QueryString("software")
Dim parSoftware As New SqlClient.SqlParameter("@software", SqlDbType.VarChar, 80)
cmd3.SelectCommand.Parameters.Add(parSoftware).Value = software


Grazie mille

alx_81 Profilo | Guru

>La concatenazione l'avevo già provata con esito negativo

Anche se ti avesse dato esito positivo, credimi, è meglio evitarla..
inoltre, visto che usi SQL Server, ti consiglio vivamente di utilizzare Stored Procedure piuttosto che somandi hardcoded..
i vantaggi sono vari, e, oltre all'incremento delle prestazioni (le sp hanno il piano d'esecuzione già pronto e sono già compilate sul db), hai anche un grande aumento del livello di sicurezza delle tue applicazioni, evitando così i malintenzionati che cercano di fare sql injection nelle..

>
>Ho provato a cercare con il tuo input sulla msdn
>
>Credo di aver risolto:
>Dim parti_software As String = Request.QueryString("software")
>Dim parSoftware As New SqlClient.SqlParameter("@software", SqlDbType.VarChar,
>80)
>cmd3.SelectCommand.Parameters.Add(parSoftware).Value = software
>

ok.. ottimo, accetta la risposta con l'apposito link, così chiudiamo il Thread.. ciao!
>
>Grazie mille
Di nulla..

Alx81 =)

http://blogs.dotnethell.it/suxstellino

Giovanni_3478 Profilo | Senior Member

Allora...
grazie sia a Totti240282 che a Alx_81
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5