PDA

View Full Version : Aiuto c#


z.cristiano
08-08-2007, 17:00
Salve a tutti...
Ho una difficoltà creare l'INSERT nel database...

Siccome ho scaricato da internet e stampato i manuali WROX:

- Beginning C# 2005 database
- Beginning C# 2005 Express Edition
- ADO.NET 2

Sono interessanti, ma non c'è proprio come inserire i dati nel database, cioè, ho fatto una maschera con due campi in txtNome e txtCognome e sul pulsante ho messo il codice che i dati compilati verranno memorizzati e registrati nel database SQL SERVER e non sono riuscito!

Allora, ricapitolo tutto!

prima di creare la maschera, AGGIUNGI NUOVO ELEMENTO -> DATABASE SQL, appena creato il file DATABASE.MDF e nella tabella ho messo: id (primary key e specifica identità SI), nome, cognome

Nella maschera ho messo un campo txtNome, txtCognome e un pulsante btnRegistra, sul pulsante btnRegistra ho inserito un codice

private void btnRegistra_Click(object sender, EventArgs e)
{

SqlConnection conn = new SqlConnection(@"server = .\sqlexpress; integrated security = true;");
string query = @"INSERT INTO clienti(nome, cognome)values(@txtNome, @txtCognome)";
SqlCommand cmq = new SqlCommand(query, conn);

}

Poi, non mi ricordo cosa e come devo inserire all'interno del conn.Open(); e conn.Close();

Vi prego mi potete sinteticamente spiegare?
Perchè sui libri non c'è neanche un applicazione semplice da capire!!

Poi, secondo voi vanno bene quei libri che ho scaricato e stampati?

Aspetto notizia
Grazie
Cristiano

AngeloNero
15-08-2007, 11:34
Dunque il giusto metodo per fare una insert è:

1)Settare la connessione
2)Aprire la connessione
3)Aprire una transazione
4)Creare un comando
5)Associare la connessione aperta al comando
6)Eseguire il comando
7)Commit o Rollback
8)Chiudere la connessione

A questo punto puoi utilizzare due tipologie di oggetti che ti permettono (in ADO.NET) di interagire con i DB:

DataReader (interazione di tipo connesso, ovvero sei sempre connesso al db durante le tue operazioni)
DataSet (interazione di tipo disconnesso, ovvero sei disconesso effettui le tuo operazioni su un porting dei dati in memoria e poi decidi quando aggiornare quest'ultimi sul DB)

Per iniziare ti consiglio l'approccio DataReader che ti illustro a seguire:

string stringa_di_connesione= "Data Source=.\sqlexpress; Initial Catalog=<MioDB>; Integrated Security = true;";
//Chiaramente sostituisci MioDB con l'effettivo nome del tuo DB
SqlConnection conn = new SqlConnection(stringa_di_connesione);
string insert = "insert into miatabella(campo1,campo2) values (@campo1,@campo2)";

try {
conn.Open();
SqlCommand command = new SqlCommand(insert,conn);
SqlTransaction tx = conn.BeginTransaction();
command.Parameters.AddWithValue("@campo1",oggetto1);
command.Parameters.AddWithValue("@campo2",oggetto2);
command.Transaction = tx;
command.ExecuteNoQuery(); // visto che non ci sono valori di ritorno
tx.Commit();
}catch (SqlException e){
tx.RollBack();
MessageBox.Show("Errore durante l'inserimento:\n"+e.ToString()+"\n RollBack Eseguito");
}
finally{
conn.Close();
}
Spero di essere stato chiaro, esco e appena torno commento meglio il tutto. Ciao, Max