Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Aggiornamento DataBase tramite un adattatore dati
mercoledì 21 gennaio 2009 - 16.23
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Leonida
Profilo
| Junior Member
85
messaggi | Data Invio:
mer 21 gen 2009 - 16:23
Salve a tutti,
Ho scritto il seguente codice di prova(postato in parti ormai in diversi thread):
protected void BCarica_Click(object sender, EventArgs e)
{
string stringaDiConnessione = "Data Source=.\\SQLEXPRESS;" +
"AttachDbFilename=|DataDirectory|\\Utenti.mdf;" +
"Integrated Security=True;" +
"User Instance=True";
string query = " SELECT nome, cognome, CF FROM Utenti,Residenza;";
SqlConnection connessione = new SqlConnection(stringaDiConnessione);
adapter = new SqlDataAdapter(query, connessione);
data = new DataSet();
adapter.Fill(data, "Utenti");
DataTable table = null;
DataColumn column = null;
DataRow row = null;
table = data.Tables["Utenti"];
column = table.Columns[0];
row = table.Rows[0];
TBNome.Text = row[column].ToString();
row["nome"] = "Leo";
}
protected void BVisualizza_Click(object sender, EventArgs e)
{
GVUtenti.DataSource = data;
GVUtenti.DataBind();
adapter.Update(data, "Utenti");
}
"adapter" e "data" sono parametri della classe. Esegue la lettura di informazioni dal DataSet e l'aggiornamento senza problemi, però quando deve aggiornare il DB tramite Update, mi solleva un'eccezione.
Ho pensato fosse un problema relativo al fatto che il DS viene caricato tramite Join, allora ho provato a caricare dati da una sola tabella del DB ma da sempre lo stesso problema. Potete aiutarmi?!
Ho già letto quanto scritto su MSDN a tale proposito.
Jeremy
Profilo
| Guru
1.527
messaggi | Data Invio:
mer 21 gen 2009 - 21:38
Che tipo di eccezione????
Dicci almeno il tipo e il Messaggio.....
Ciao.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 21 gen 2009 - 23:51
>Salve a tutti,
Ciao, a parte che come dice Jeremy devi cercare di essere più corretto nella spiegazione del problema (vedi l'eccezione ed il messaggio di errore), forse posso ipotizzare un problema.
Vedo che tu popoli il tuo dataset tramite la pressione di un pulsante, gestito dall'evento BCarica_Click.
Ok, il caricamento va, ma poi riusi lo stesso dataset nell'altro evento. Siccome l'esecuzione poi non riesegue il BCarica_Click, perchè hai premuto l'update, secondo me ottieni una ArgumentNullException, perchè il dataset è Null. Se l'errore è quello, fai un bel metodo che ricava i dati e richiamalo nella BCarica_Click, ma anche nella BVisualizza_Click. Sennò la variabile data non è correttamente popolata.
Ti dico, con le poche informazioni che abbiamo, il tuo codice potrebbe dare l'idea che si tratti di quell'errore, ma se non è così, ti invito ad essere più preciso.
Ciao!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Leonida
Profilo
| Junior Member
85
messaggi | Data Invio:
gio 22 gen 2009 - 10:14
Mi da una InvalidOperationException sul metodo update. Allora ho seguito le indicazioni su MSDN definendo la query di aggiornamento ma mi da una DBConcurrencyException su update.
Il DataSet è un parametro static, quindi viene letto senza problemi. Sicuramente l'errore è banale, ma è la prima volta che lavoro con ADO.NET e non so proprio dove mettere mano, sto andando a tentativi.
Leonida
Profilo
| Junior Member
85
messaggi | Data Invio:
gio 22 gen 2009 - 12:35
Ok,capito come funziona la gestione non connessa del DB, usando le sotred procedure non mi da problemi. Con i DataAdapter mi da in vece un errore sui parametri, posto il codice:
...
DataTable table = data.Tables["Utenti"];
DataColumn column = table.Columns["nome"];
DataRow row = table.Rows[0];
GVUtenti.DataSource = data;
GVUtenti.DataBind();
String updateUtenti = " UPDATE Utenti SET nome=@nome, congnome=@cognome WHERE CF=@CF; ";
adapter.UpdateCommand = new SqlCommand(updateUtenti, connessione);
adapter.UpdateCommand.Parameters.Add("@nome", SqlDbType.VarChar, 50, row[column].ToString());
column = table.Columns["cognome"];
row = table.Rows[0];
adapter.UpdateCommand.Parameters.Add("@cognome", SqlDbType.VarChar, 50, row[column].ToString());
column = table.Columns["CF"];
row = table.Rows[0];
adapter.UpdateCommand.Parameters.Add("@CF", SqlDbType.VarChar, 50, row[column].ToString());
connessione.Open();
adapter.Update(data, "Utenti");
...
Mi stampa il msg di errore:
La query con parametri '(@nome varchar(50),@cognome varchar(50),@CF varchar(50)) UPDATE ' prevede il parametro '@nome', che non è stato specificato
Mi sembra di passare correttamente i parametri, non riesco a trovare l'errore, mi potete aiutare?
Torna su
Stanze Forum
Elenco Threads
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 !