Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso
Titan Army P2712V è un monitor da 27 pollici che unisce due anime in un unico prodotto: da un lato la qualità visiva del 4K UHD a 160 Hz, dall'altro la velocità estrema del Full HD a 320 Hz. Con pannello Fast IPS, HDR400, Adaptive-Sync, illuminazione RGB e regolazioni ergonomiche, punta a soddisfare sia i giocatori competitivi che i content creator
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-02-2010, 14:05   #1
J0k3r91
Member
 
Iscritto dal: Apr 2008
Messaggi: 101
[C#] Interazione fra C# e database SQL Server!

Ciao a tutti!

Mi trovo di fronte a un problema che cerco di risolvere ormai da diversi giorni.
Premetto che sono ancora uno studente e le mie conoscenze di programmazione (sopratutto se di mezzo c'è del SQL) non sono ancora proprio delle migliori!

Sto sviluppando un'applicativo C# in WPF che mi memorizzi e carichi dei dati da un database SQL Server da e nel mio programma.

Ho generato le Query GetData() e Fill() e la prima di esse funziona perfettamente.

Il mio problema sta nel Fill(): la Query SQL che mi fal'INSERT dei dati nel database è esatta (se infatti provo tramite Query Builder --> Execute Query funziona tutto e mi riempie la mia Table tblFilm senza problemi con una nuova row).

Ma come faccio a farlo tramite codice C#??

Sarà che faccio un gran casino fra sti TableAdapter, DataSet, DataTable, DataRow, ecc..!!

Al momento il mio codice in C# gira e non da errore, ma non fa proprio un bel niente!!

Qualcuno ha anche solo un codice generico per fare la Fill in un db?

La parte C# che non va è la seguente:
Codice:
tblFilmTableAdapter adapt = new tblFilmTableAdapter();
DsDataFilm.tblFilmDataTable table = new DsDataFilm.tblFilmDataTable(); //il mio DataSet
DataRow row = table.NewtblFilmRow();
row["TITOLO"] = "Prova";
row["ANNO"] = 1988;
row["GENERE"] = "Action";
row["RATING"] = 5;
row["TRAMA"] = "asdfghjklpoi";
row["LOCANDINA"] = "url:\\locandina.jpg";
adapt.FillBase(table, 4); //Fill della table fatta prima nella row con ID = 4.. (@Param1)
Dove "4" sarebbe l'ID della row da riempire..





Ho in realtà due metodi Fill (Fill e FillBase) uno che accetta una table e l'altro che accetta ogni singolo parametro. Nessuno dei due tramite C# va..

In definitiva.. come faccio a creare una nuova row e a metterci tutti i miei dati??

Qualcuno sa darmi una dritta? ho cercato in giro ma non ho trovato niente che mi funzionasse!
__________________
CPU: Intel Core 2 Quad Q8400@3.30Ghz cooled by Cooler Master Gemini II (413x8, FSB@1652Mhz, 1.44v) MB: Gigabyte GA-P45-UD3LR Ram: 4GB DDR2@826Mhz (5-7-7-20) Sk Video: XFX8800GT A.D. Edition XXX (GPU: 670Mhz, MEM: 1950Mhz, GDDR3 512Mb) HDD: 2xMaxtor DiamondMax 160GB 8Mb 7200rpm + Seagate 1Tb Alimentatore: Corsair TX650W Schermo: LCD ASUS VW222 22" Casse: Creative 5.1 S.O.: Windows 7 Ultimate 64bit Adsl (Down/Up): Fastweb 7Mbit / 512Kb Multimedia HDD: Iomega ScreenPlay Director HD 1Tb

Ultima modifica di J0k3r91 : 15-02-2010 alle 16:57.
J0k3r91 è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2010, 13:05   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Non prenderla come una "critica", ma francamente non vedo il perchè di tanta complicazione per fare una Insert su una tabella sola.
Il fatto che i DataSet siano il cuore di ADO.NET non significa che sia sempre obbligatorio farne uso.
Provato con un semplicissimo SqlCommand ?
http://www.codeproject.com/KB/databa...in_csharp.aspx
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2010, 13:21   #3
J0k3r91
Member
 
Iscritto dal: Apr 2008
Messaggi: 101
Ciao MarcoGG.

Il fatto è che i DataSet li DEVO utilizzare perchè sono parte dell'esercizio che dobbiamo svolgere!

Altrimenti l'avrei fatto prima..

Quindi, sempre utilizzando il DataSet.. come potrei fare

__________________
CPU: Intel Core 2 Quad Q8400@3.30Ghz cooled by Cooler Master Gemini II (413x8, FSB@1652Mhz, 1.44v) MB: Gigabyte GA-P45-UD3LR Ram: 4GB DDR2@826Mhz (5-7-7-20) Sk Video: XFX8800GT A.D. Edition XXX (GPU: 670Mhz, MEM: 1950Mhz, GDDR3 512Mb) HDD: 2xMaxtor DiamondMax 160GB 8Mb 7200rpm + Seagate 1Tb Alimentatore: Corsair TX650W Schermo: LCD ASUS VW222 22" Casse: Creative 5.1 S.O.: Windows 7 Ultimate 64bit Adsl (Down/Up): Fastweb 7Mbit / 512Kb Multimedia HDD: Iomega ScreenPlay Director HD 1Tb
J0k3r91 è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2010, 13:24   #4
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Non prenderla come una "critica", ma francamente non vedo il perchè di tanta complicazione per fare una Insert su una tabella sola.
Il fatto che i DataSet siano il cuore di ADO.NET non significa che sia sempre obbligatorio farne uso.
Provato con un semplicissimo SqlCommand ?
http://www.codeproject.com/KB/databa...in_csharp.aspx
quoto. Connection e Command e se proprio ci si deve divertire si pilotano le Transaction.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2010, 13:54   #5
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da J0k3r91 Guarda i messaggi
Ciao MarcoGG.

Il fatto è che i DataSet li DEVO utilizzare perchè sono parte dell'esercizio che dobbiamo svolgere!

Altrimenti l'avrei fatto prima..

Quindi, sempre utilizzando il DataSet.. come potrei fare

Allora assicurati di eseguire l'AcceptChanges() sul DataSet ( o DataTable ) interessato, e poi esegui l'Update :
http://msdn.microsoft.com/it-it/libr...3x(VS.80).aspx

Il fatto che dichiari nel tuo post iniziale che il codice C# gira senza errori, ma a DB "non fa niente", mi fa pensare ad una dimenticanza di questo genere...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2010, 13:57   #6
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
e se proprio ci si deve divertire si pilotano le Transaction.
E ri-quoto. Certo, per chi ha uno strano concetto di "divertimento"...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2010, 14:24   #7
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Spero che sia un esercizio scolastico e non universitario, perchè programmare ad un solo livello, diciamo 1+ un wrapper, non è proprio il massimo, gestendo di fatto la persistenza dallo strato presentazione.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2010, 14:37   #8
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
Quote:
Originariamente inviato da nuovoUtente86 Guarda i messaggi
Spero che sia un esercizio scolastico e non universitario, perchè programmare ad un solo livello, diciamo 1+ un wrapper, non è proprio il massimo, gestendo di fatto la persistenza dallo strato presentazione.
al corso di DB abbiamo fatto le peggio porcate dal punto di vista della separazione degli strati proprio perché era un esame di DB e non di Ingegneria del Software o Architetture Software

(resta cmq una porcata eh)
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2010, 17:20   #9
J0k3r91
Member
 
Iscritto dal: Apr 2008
Messaggi: 101
Quote:
Originariamente inviato da nuovoUtente86 Guarda i messaggi
Spero che sia un esercizio scolastico e non universitario, perchè programmare ad un solo livello, diciamo 1+ un wrapper, non è proprio il massimo, gestendo di fatto la persistenza dallo strato presentazione.
Sisi è solo a livello scolastico superiore, non universitario
__________________
CPU: Intel Core 2 Quad Q8400@3.30Ghz cooled by Cooler Master Gemini II (413x8, FSB@1652Mhz, 1.44v) MB: Gigabyte GA-P45-UD3LR Ram: 4GB DDR2@826Mhz (5-7-7-20) Sk Video: XFX8800GT A.D. Edition XXX (GPU: 670Mhz, MEM: 1950Mhz, GDDR3 512Mb) HDD: 2xMaxtor DiamondMax 160GB 8Mb 7200rpm + Seagate 1Tb Alimentatore: Corsair TX650W Schermo: LCD ASUS VW222 22" Casse: Creative 5.1 S.O.: Windows 7 Ultimate 64bit Adsl (Down/Up): Fastweb 7Mbit / 512Kb Multimedia HDD: Iomega ScreenPlay Director HD 1Tb
J0k3r91 è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2010, 17:27   #10
J0k3r91
Member
 
Iscritto dal: Apr 2008
Messaggi: 101
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Allora assicurati di eseguire l'AcceptChanges() sul DataSet ( o DataTable ) interessato, e poi esegui l'Update :
http://msdn.microsoft.com/it-it/libr...3x(VS.80).aspx

Il fatto che dichiari nel tuo post iniziale che il codice C# gira senza errori, ma a DB "non fa niente", mi fa pensare ad una dimenticanza di questo genere...
Ho aggiunto l'AcceptChanges() e infine l'Update() al programma, perchè precedentemente non le avevo messe.. continua comunque a non fare un bel niente!

Non so dove andare a parare..
__________________
CPU: Intel Core 2 Quad Q8400@3.30Ghz cooled by Cooler Master Gemini II (413x8, FSB@1652Mhz, 1.44v) MB: Gigabyte GA-P45-UD3LR Ram: 4GB DDR2@826Mhz (5-7-7-20) Sk Video: XFX8800GT A.D. Edition XXX (GPU: 670Mhz, MEM: 1950Mhz, GDDR3 512Mb) HDD: 2xMaxtor DiamondMax 160GB 8Mb 7200rpm + Seagate 1Tb Alimentatore: Corsair TX650W Schermo: LCD ASUS VW222 22" Casse: Creative 5.1 S.O.: Windows 7 Ultimate 64bit Adsl (Down/Up): Fastweb 7Mbit / 512Kb Multimedia HDD: Iomega ScreenPlay Director HD 1Tb
J0k3r91 è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2010, 22:36   #11
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
E ri-quoto. Certo, per chi ha uno strano concetto di "divertimento"...
Personalmente ritengo i Dataset qualcosa di morto con VS2003.
Generics prima e Linq poi li hanno resi decisamente superati come tecnica di programmazione.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2010, 22:48   #12
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Personalmente ritengo i Dataset qualcosa di morto con VS2003.
Generics prima e Linq poi li hanno resi decisamente superati come tecnica di programmazione.
Quoto.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2010, 22:58   #13
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Personalmente ritengo i Dataset qualcosa di morto con VS2003.
Generics prima e Linq poi li hanno resi decisamente superati come tecnica di programmazione.
Bah, mi sembra un po' "fortina" come affermazione.
Chi ha imparato a sfruttare le potenzialità dei DataSet penso non sia molto d'accordo.
Sarà che io resto sempre scettico, e abbastanza "divertito" di fronte ad affermazioni come queste, se si rimane nel contesto italiano, dove vai ad un corso e senti il docente di turno dire "...è una tecnica di sviluppo ormai superata e... blah blah blah...", poi vai a fare un colloquio in una signora azienda, almeno sulla carta, e ti senti dire che hanno bisogno di un tizio che faccia classi in Java o .NET, che devono processare "tracciati record" in formato testo, che escono dal gestionale, al quale ovviamente nessuno vuole mettere mano, e che è scritto... in Cobol.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2010, 23:06   #14
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
I Dataset saranno effettivamente funzionali e produttivi soprattutto per programmatori poco esperti, ma di certo non sono il miglior esempio( soprattutto in ambito di flessibilità, scalabilità e riutilizzo) di programmazione.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2010, 23:23   #15
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da J0k3r91 Guarda i messaggi
Ho aggiunto l'AcceptChanges() e infine l'Update() al programma, perchè precedentemente non le avevo messe.. continua comunque a non fare un bel niente!

Non so dove andare a parare..
Ma l'Update l'hai fatto correttamente come nell'esempio alla pagina Msdn che ti ho linkato ?
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2010, 00:01   #16
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Bah, mi sembra un po' "fortina" come affermazione.
Chi ha imparato a sfruttare le potenzialità dei DataSet penso non sia molto d'accordo.
Il tempo che perdi a creare un dataset tipizzato con l'editor fornito da VS2005 in poi fa passare ogni voglia di utilizzarli (con Linq poi non se ne parla proprio).
Un Dataset non tipizzato è un incubo da gestire in un applicativo di una certa complessità, non sai mai chi ci ha messo le mani sopra e finchè non arrivi a spulciare la query di lettura e tutta l'elaborazione che c'è stata fatta sopra non sai cosa c'è dentro. Proprio la condizione ideale per qualunque business layer.

Mi sta capitando in questi giorni di mettere mano ad un progetto corposo (spacciato per essere in .NET 3.5) che fa uso esclusivo di Dataset non tipizzati in ogni punto ed è tutto un andare a cercare l'origine del dataset per sapere con cosa è stato valorizzato e successivamente da chi viene elaborato e tutto questo solo per conoscere cosa può esserci dentro quella scatola nera. Ma nessuno mi garantisce che una modifica alla query di partenza o qualche punto a valle non faccia poi schiantare il software in un punto remoto solo perchè non c'è più l'informazione che cercavo, stai sicuro che non riceverai nessun errore in compilazione e probabilmente anche l'Unit Test non ti porrà al riparo dagli errori, dovresti confidare nei test di integrazione (di difficile realizzazione se i punti da testare hanno diversi componenti che li separano).
Metti poi che in un database aziendale leggi con Viste e scrivi con Stored,
che non sono impiegabili nei webservice, a meno di non dare per scontato che il client sia in .NET e che chi sviluppa il client vada a spulciare il sorgente del webservice solo per capire cosa gli è stato ritornato.

Ce n'è abbastanza per relegarli al passato.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2010, 10:56   #17
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da J0k3r91 Guarda i messaggi
Ho aggiunto l'AcceptChanges() e infine l'Update() al programma, perchè precedentemente non le avevo messe.. continua comunque a non fare un bel niente!
Aggiungo un piccolo esempio ( con Access, per Sql basta cambiare i relativi oggetti del provider di dati opportuno e ovviamente la CN... ).
La tabella sul DB è "tblFilm".

> Dichiarazioni :
Codice:
        private OleDbDataAdapter DA = new OleDbDataAdapter(sqlSelect, CN);
        private DataSet DS = new DataSet();
Dove sqlSelect è una semplice "SELECT * FROM tblFilm".
CN è la Connection e DS è un semplice DataSet, quindi inutile scomodare altri oggetti, metodi strani, ecc. per gestire una tabella...

> Fill del DataSet ( viene fatto una volta sola all'avvio dell'applicazione ) e sua rappresentazione su un DataGridView :
Codice:
            DA.Fill(DS);
            DataGridView1.DataSource = DS.Tables[0];
> Aggiungo una nuova Row :
Codice:
            DataRow nuovaRiga = DS.Tables[0].NewRow();
            int nuovoID = Convert.ToInt32(DS.Tables[0].Compute("MAX(ID)", null)) + 1;
            nuovaRiga["ID"] = nuovoID;
            nuovaRiga["TITOLO"] = "Titolo";
            nuovaRiga["ANNO"] = 2010;
            nuovaRiga["GENERE"] = "Genere";
            nuovaRiga["RATING"] = 5;
            nuovaRiga["TRAMA"] = "Trama";
            nuovaRiga["LOCANDINA"] = "Locandina";
            DS.Tables[0].Rows.Add(nuovaRiga);

            if(DS.HasChanges()==true)
            {
                using(OleDbCommandBuilder CB = new OleDbCommandBuilder(DA))
                {
                    DA.UpdateCommand = CB.GetUpdateCommand();
                    DA.InsertCommand = CB.GetInsertCommand();   
                    DA.DeleteCommand = CB.GetDeleteCommand();
                    DA.Update(DS);
                }
            }
            DS.AcceptChanges();
            MessageBox.Show("Modifiche Salvate");
- nuovoID lo calcolo al momento dal DS stesso.
- Ovviamente anche qui sostituire con SqlCommandBuilder ecc...

Perciò, come già detto, niente di trascendentale.
Non so se la complessità della tua impostazione ( definizione di oggetti e metodi vari... ) faccia parte dell'esercizio.
Se l'unico requisito è "usate un DataSet", qui hai forse l'esempio più immediato che ti si possa fornire.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
OPPO Watch X2 Mini, lo smartwatch compatto a cui non manca nulla OPPO Watch X2 Mini, lo smartwatch compatto a cui...
Intel rivede la sua strategia open sourc...
Intel: ciclo di rilascio annuale per gli...
Intel XeSS 3 porta la Multi-Frame Genera...
PlayStation 6 e nuove Radeon, ecco le te...
New York porta in tribunale TikTok, Meta...
L'intelligenza artificiale canceller&agr...
Battlefield 6: analisi grafica e DLSS
Gauss Fusion presenta GIGA: l'Europa acc...
Lo sapete che anche le auto elettriche d...
Oltre un miliardo di dati sensibili sott...
iPhone 17, segni sui modelli in esposizi...
Sviluppatore Microsoft confessa: la cele...
Sfrutta l'IA per migliorare a lavoro, l'...
iPhone 18 Fold: un leak indica i materia...
Instagram testa nuove opzioni per contro...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:25.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v