Eseguire una query di comando

giovedì 15 maggio 2014 - 07.13

renarig Profilo | Expert

Premetto che in ASP sono proprio ina schiappa !!

Gli elementi di cui dispongo sono:

1°) Un sito in costruzione con ASP ( Visual Studio 2013 )

2°) Un DataBase di SQLServer remoto

3°) Una stringa di connessione nel file Web.config che punta appunto al DB di cui sopra
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

4°) una pagina .aspx con dentro un "Button" che per adesso mi fa solo uno stupidissimo messaggio
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click MsgBox("Messaggio") ' qui vorrei eseguire una query ( UPDATE T1 SET ....eccetera........ ) End Sub


Vorrei si Clik del Button eseguire la query di UPDATE immediatamente dopo il messaggio
ma non riesco a trovare la sintassi corretta

NB: Il mio problema non è nel testo SQL della query, bensi nelle poche righe ( spero siano poche )
necessarie per aprire la connessione lanciare la query e richiusdere la connessione
......... oppure non so cos'altro serva

Grazie


.

0v3rCl0ck Profilo | Guru

Puoi sfruttare ADO.NET oppure un framework come entity framework. Per ora ti consiglio prima di capire come funziona ado.net

http://www.codeproject.com/Articles/361579/A-Beginners-Tutorial-for-Understanding-ADO-NET
http://www.csharp-station.com/Tutorial/AdoDotNet

un esempio:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

entity framework:

http://www.asp.net/entity-framework
http://www.asp.net/web-forms/tutorials/getting-started-with-ef


Ciao,
Michael Denny | Visual C# MVP
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
http://mvp.microsoft.com/mvp/Michael%20Denny-5000735
Twitter: @dennymic

renarig Profilo | Expert

Caspita molto più difficile di quanti immaginassi


Pensa che io sono abituato con VBA

Dim DB AS DAO.Database
SET DB = ( la stringa di connessione )
DB.Execute (" INSERT ......... eccetera ......")


Confesso che ( per il momento e per mia ignoranza ) non ci ho capito nulla nella tua risposta


Comunque ti ringrazio per l'impegno

0v3rCl0ck Profilo | Guru

Se hai bisogno posso convertirtela in VB.NET

Questo è un metodo sfruttando oggetti parlanti del tuo modello, altrimenti puoi usare un SqlAdapter e riempire un DataSet/DataTable che sono una specie del vecchio Recordset, ma ti consiglio di fare lo sforzo di creare ed utilizzare per bene un tuo modello di classi che rispecchi il modello dei dati come vedi nel mio esempio con la classe utente e poi evita di fare tutto questo codice direttamente nel punto dove ti serve, ma creati più classi di accesso ai dati che ti mascherano tutto il lavori in modo da ottenere un qualcosa tipo userStorage.GetUser(1234) Che chiamerà il db e ritornerà una classe User con tutte le proprietà valorizzate.


Michael Denny | Visual C# MVP
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
http://mvp.microsoft.com/mvp/Michael%20Denny-5000735
Twitter: @dennymic

renarig Profilo | Expert

>Se hai bisogno posso convertirtela in VB.NET
???

Scusami ma io sono DataBasista di origine e ho masticato un po di VusualBasic e VBA

Significa che quel codice che mi hai proposto è forse VisualC ???
-- ( melo fanno pensare tutte quelle prentesi graffe )

allora si ti sarei grato se me lo conveti in VB.Net

Non è che io mi aspetto la pappa pronta,
ma in questo caso sono molto ignorante e in difficolta


Grazie

0v3rCl0ck Profilo | Guru

non c'è problema, perchè il codice .net è facilmente convertibile con strumenti anche online

Private Sub Main() Dim users = New List(Of User)() Using connection = New SqlConnection("Server=localhost;Database=TestDb;Trusted_Connection=True;") connection.Open() Using command = New SqlCommand("SELECT UserId, FirstName, LastName FROM dbo.Users", connection) Using reader = command.ExecuteReader() While reader.Read() Dim user = New User() user.UserId = CInt(reader("UserId")) user.FirstName = DirectCast(reader("FirstName"), String) user.LastName = DirectCast(reader("LastName"), String) users.Add(user) End While End Using End Using connection.Close() End Using For Each user As var In users Console.WriteLine("UserId: {0}", user.UserId) Console.WriteLine("FirstName: {0}", user.FirstName) Console.WriteLine("LastName: {0}", user.LastName) Next End Sub Public Class User Public Property UserId As Integer Public Property FirstName As String Public Property LastName As String End Class '======================================================= 'Service provided by Telerik (www.telerik.com) 'Conversion powered by NRefactory. 'Twitter: @telerik 'Facebook: facebook.com/telerik '=======================================================

convertito con http://converter.telerik.com/ e ne esistono anche altri http://www.developerfusion.com/tools/convert/csharp-to-vb basta che cerchi su google "convert c# to vb.net"


Michael Denny | Visual C# MVP
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
http://mvp.microsoft.com/mvp/Michael%20Denny-5000735
Twitter: @dennymic

renarig Profilo | Expert

Direi che grazie al Vostro aiuto sono arrivato per ora al 90%

Lo stato attuale è questo ( lo riepilogo per chiarezza )

1°) Un DB SQLServer remoto con una tabella di Nome "LA" e con i campi
- "LAId" numerico Key
- "LANote" Testo

2°) una pagina ASP di nome Pag10.aspx ( VisualStudio2013 )
la ho fatta volutamente con SOLO quello che serve al problema
- TextBox di nome "TextBoxIdxx" dove scrivo il Id del record da UPDATARE
- TextBox di nome "TextBoxNote" dove scrivo il testo da UPDATARE nel campo Note
- Button di nome "BtnExecute" per comandare la query di UPDATE
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

3°) Un file Web.config che contiene la stringa di connessione al DB
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

4°) Il codice VisualBasic del Button "BtnExecute" è il seguente
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


E fino a qui è tutto perfetto e funzionante:
Quello che devo ancora mettere a punto e per cui chiedo aiuto é:

La stringa di connessione usata in VisualBasic ("connxx") del punto 4° è identica
alla stringa do connessione ("CSDFWFa") del file Web.config al punto 3°

Pero si tratta di 2 stringhe distinte, invece vorrei
che "connxx" prendesse il suo valore direttamente da "CSDFWFa"
piu o meno cosi:
' ............ Protected Sub BtnExecute_Click(sender As Object, e As EventArgs) Handles BtnExecute.Click connxx = New SqlConnection(".. Prendi la stringa da Web.config .... CSDFWFa") ' ...............


Grazie

0v3rCl0ck Profilo | Guru

per leggere dal file di configurazione alla sezione connectionstings:

ConfigurationManager.ConnectionStrings("CSDFWFa").ConnectionString

se non c'è già devi aggiungere il riferimento alla libreria System.Configuration


ciao
Michael Denny | Visual C# MVP
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
http://mvp.microsoft.com/mvp/Michael%20Denny-5000735
Twitter: @dennymic

renarig Profilo | Expert

Perfetto, funziona benissimo ...
Volevo metterti un secondo "Accetta" ma purtroppo quando ho messo il 2° te lo ha tolto dal 1° :( :(

In pratica ho modificato il codice VisualBasic del mio precedente punto 4° in questo modo
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra



>se non c'è già devi aggiungere il riferimento alla libreria System.Configuration
Questa frase non la ho capita, immagino che il riferimento ci sia di già perché funziona
ma non so dove verificarlo



Grazie

0v3rCl0ck Profilo | Guru


>>se non c'è già devi aggiungere il riferimento alla libreria System.Configuration
>Questa frase non la ho capita, immagino che il riferimento
>ci sia di già perché funziona
>ma non so dove verificarlo

quando vuoi utilizzare funzionalità di librerie esterne ma anche di .net che non sono aggiunte di default, devi aggiungere il riferimento sul tuo progetto alle dll che vuoi utilizzare:

http://msdn.microsoft.com/en-us/library/hh708954.aspx

http://goo.gl/Bt5Jlc



Michael Denny | Visual C# MVP
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
http://mvp.microsoft.com/mvp/Michael%20Denny-5000735
Twitter: @dennymic

renarig Profilo | Expert

Ok,

Grazie
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5