Ciao, con il codice che segue, devo inserire un record in una tabella, poi recuperare il campo id dell'utlimo record inserito e inserire un altro record in un'altra tabella dove inserirò anche il valore del campo id appena recuperato.
Il problema è che nel secondo inserimento, mi inserisce tanti record quanti ce ne sono nella tabella +1. Il problema dovrebbe stare nel ciclo while. Più precisamente credo che il problema stia nelle aperture delle connessioni.. ma ho provato e riprovato, niente non riesco a farlo funzionare a dovere Help
:
codice:
if (IsPostBack)
{
string giorno = gg.SelectedItem.Value;
string mese = mm.SelectedItem.Value;
string anno = aa.Text;
string datanascita = giorno +"/"+mese+"/"+anno;
string connstring = "Database=maximotogest;Data Source=localhost;User Id=root;Password=";
string queryCliente="INSERT INTO clienti(Nome,Cognome,Birth_date,Luogo_nascita,Res_city,Address,Cod_fisc,Partita_iva,Num_tel,Num_fax,Note_cliente) VALUES('"+cnome.Text+"' ,'"+ ccognome.Text +"','"+ datanascita + "','"+clnascita.Text+"','"+ccres.Text+"','"+cvia.Text+"','"+ccodfisc.Text+"','"+cpiva.Text+"','"+cntel.Text+"','"+cnfax.Text+"','"+cnote.Text+"')";
//LAST_INSERT_ID() E' UNA FUNZIONE INTRINSECA DI MYSQL QUINDI NON STANDARD
string qselectionlastid="SELECT LAST_INSERT_ID() FROM clienti";
//inserisco il record per il cliente
MySqlConnection conn = new MySqlConnection(connstring);
MySqlCommand cmdcliente = new MySqlCommand(queryCliente);
conn.Open();
cmdcliente.Connection = conn;
cmdcliente.ExecuteNonQuery();
cmdcliente.Connection.Close();
//recupero l'ultimo record inserito e inserisco il ciclomotore con
l'id recuperato
MySqlConnection readerconn = new MySqlConnection(connstring);
MySqlCommand cmdselectlastid = new MySqlCommand(qselectionlastid,readerconn);
MySqlDataReader reader;
readerconn.Open();
reader=cmdselectlastid.ExecuteReader();
while(reader.Read())
{
uint Id = (uint) reader.GetInt32(0);
string queryCiclomotore = "INSERT INTO ciclomotori(Cliente,Tipo_veicolo,Colore,Marca,Modello,Cilindrata,Cod_telaio,Targa,Note_ciclomotore) VALUES("+Id+",'"+mtveicolo.Text+"','"+mcolore.Text+"','"+mmarca.Text+"','"+mmodello.Text+"',"+mcilind.Text+",'"+mtelaio.Text+"','"+mtarga.Text+"','"+mnote.Text+"')";
MySqlConnection myconn = new MySqlConnection(connstring);
MySqlCommand cmdciclomotore = new MySqlCommand(queryCiclomotore);
cmdciclomotore.Connection = myconn;
myconn.Open();
cmdciclomotore.ExecuteNonQuery();
cmdciclomotore.Connection.Close();
}
reader.Close();
readerconn.Close();
}