Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126

    [C#]Problemi con inserimento record in ciclo..

    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();
    }
    Voglio l'alt+s anche per FF

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Hai verificato il corretto funzionamento di LAST_INSERT_ID? Sei sicuro che restituisca ciò che desideri?

    In alternativa, sostituisci il while con un'istruzione if, se non ti serve eseguire un ciclo.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    c# fa parte dei linguaggi per .Net framework
    ti sposto nel subforum, visto che ci sei leggi il regolamento
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  4. #4
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    Originariamente inviato da alka
    Hai verificato il corretto funzionamento di LAST_INSERT_ID? Sei sicuro che restituisca ciò che desideri?

    In alternativa, sostituisci il while con un'istruzione if, se non ti serve eseguire un ciclo.

    Ciao!
    si ho verificato e mi dà l'id dell'ultimo record inserito.. quindi funziona.. ok provo a sostituire il ciclo con l'if
    c# fa parte dei linguaggi per .Net framework
    ti sposto nel subforum, visto che ci sei leggi il regolamento
    agrrrrrrr wou wou ahgrrrrrr
    Voglio l'alt+s anche per FF

  5. #5
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    Originariamente inviato da alka
    Hai verificato il corretto funzionamento di LAST_INSERT_ID? Sei sicuro che restituisca ciò che desideri?

    In alternativa, sostituisci il while con un'istruzione if, se non ti serve eseguire un ciclo.

    Ciao!
    ooookk.. che scemo che sono.. a che mi serviva il ciclo.. ehhehe
    grazie 1000

    -------------------------
    x :Xegallo:
    wou wou..
    Voglio l'alt+s anche per FF

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.