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
App. WinForms / WPF .NET
Trovare l'ID appena inserito con OleDbDataAdapter.InsertCommand
martedì 12 luglio 2005 - 21.52
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
astroman
Profilo
| Junior Member
105
messaggi | Data Invio:
mar 12 lug 2005 - 21:52
Una domanda che penso servirà a moltissime persone, cioè dopo aver inserito una riga su un DB Access, come faccio a sapere l'ID appena inserito per poterlo utilizzare, per esempio, per inserirlo in un'altra query?
Ne avrei bisogno abbastanza urgentemente e chi può darmi una soluzione pratica ed efficace...beh gli sarei enormente grato!:D
Partiamo da questo codice d'esempio:
OleDbConnection con = new OleDbConnection();
OleDbCommand cmd = new OleDbCommand();
OleDbDataAdapter da = new OleDbDataAdapter();
con.ConnectionString=<connessione>;
con.Open();
da.InsertCommand=cmd;
da.InsertCommand.CommandText="INSERT INTO TBL (CAMPO) VALUES (?)";
da.InsertCommand.Parameters.Add("CAMPO",Valore);
da.InsertCommand.Connection=con;
da.InsertCommand.ExecuteNonQuery();
e adesso?Come faccio a sapere l'id che ho appena inserito (è un campo Contatore di Access)
totti240282
Profilo
| Guru
1.574
messaggi | Data Invio:
mar 12 lug 2005 - 22:11
c'era una discussione un po di giorni fa su questo,si usava una query particolare o tramite l'uso delle storedprocedure.
se vuoi quello delle storeprocedure fai un fischio.
C'è solo un capitano !!!!!!
astroman
Profilo
| Junior Member
105
messaggi | Data Invio:
mar 12 lug 2005 - 22:14
No, grazie...lo so anche io come si fanno le storeprocedures...solo che, come indicato, devo utilizzare un DB Access...
Beh mi rispondo da solo...ho appena trovato questo magnifico codice d'esempio che penso che sarà veramente moooooolto utile a molti di noi (chissà, non è che sarebbe utile scriverci sopra un articolo?!?)...cmq eccolo qui...
string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\db.mdb";
string strSQL = "INSERT INTO tblStudent (Name,Address) VALUES(?,?)";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd = new OleDbCommand(strSQL,conn );
cmd.Parameters.Add("@Name", OleDbType.Char, 50).Value = txtName.Text;
cmd.Parameters.Add("@Address", OleDbType.Char, 50).Value = txtAddress.Text;
cmd.ExecuteNonQuery();
cmd = new OleDbCommand("SELECT @@IDENTITY", conn);
int nId = (int)cmd.ExecuteScalar();
strSQL = "INSERT INTO tblScore (StudentId, Score) VALUES (?,?)";
cmd.CommandText = strSQL;
cmd.Parameters.Add("@StudentId", OleDbType.Integer).Value = nId;
cmd.Parameters.Add("@Score", OleDbType.Integer).Value = Int32.Parse(txtScore.Text);
cmd.ExecuteNonQuery();
Provato e....funziona!:D
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
mar 12 lug 2005 - 22:55
Se hai bisogno di recuperare l'id durante l "update" del dataset ?.
C'è il mio blog che ti spiega come fare:
Access Recuperare nel DataSet la Chiave autonumber generata dal database
http://community.visual-basic.it/lucianob/archive/2005/01/07/3062.aspx
astroman
Profilo
| Junior Member
105
messaggi | Data Invio:
mar 12 lug 2005 - 23:00
Beh concettualmente mi sembra uguale...anche se il codice espresso nell'esempio che ho riportato accorcia notevolmente la scrittura del codice, è più diretto e non serve aprire tanti oggetti, sbaglio?
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
mar 12 lug 2005 - 23:06
Non si tratta della stessa cosa!.
Solo il comando "SELECT" che recupera il dato è uguale, ovviamente, il resto cambia soprattutto nel contesto.
Nel tuo esempio fai l'inserimento tramite un execute command e poi recuperi l'ultimo id inserito.
Il mio invece presuppone che tu gestisca il binding con gli oggetti nella maschera e che pertanto tu abbia aperto un dataset e che utilizzi il comando:
DataAdapter.Update(dataset).
astroman
Profilo
| Junior Member
105
messaggi | Data Invio:
mar 12 lug 2005 - 23:11
Ah ok, hai ragione...ma penso che stiamo parlando di due situazioni diverse.In ogni caso è molto utile anche il tuo...il mio diciamo che serve più per eseguire delle query "veloci" di inserimento/cancellazione/modifica...beh almeno io in tanti anni di programmazione ne ho fatto tantissimo uso
alba
Profilo
| Newbie
39
messaggi | Data Invio:
sab 12 gen 2008 - 11:12
scusate se riapro la discussione, ma....
ho provato il codice e funziona, ma come possiamo sapere che l'id recuperato e' effettivamente l'id inserito da un INSERT INTO che ho fatto io anziche' l'id di un altro utente che stava facendo anche lui la stessa operazione?
spero di essere stato chiaro.....
grazie
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 !