public static void Aggiungi() { //Prendo i dati dell'agente dall'utente a console Console.WriteLine("Aggiungo un nuovo agente!\nNome?"); string nome = Console.ReadLine(); Console.WriteLine("Cognome?"); string cognome = Console.ReadLine(); Console.WriteLine("Codice Fiscale? "); string codiceFiscale = ""; bool ok = false; while (ok == false) //Controllo sulla lunghezza del codice fiscale { codiceFiscale = Console.ReadLine(); if (codiceFiscale.Length != 16) { Console.WriteLine("Codice Fiscale non valido."); } else { ok = true; } } Console.WriteLine("Data di Nascita? "); DateTime dataNascita = new DateTime(); //Check sulla validità della data do { ok = DateTime.TryParse(Console.ReadLine(), out dataNascita); if (ok == false) { Console.WriteLine("Data di Nascita non valida."); } } while (ok == false); Console.WriteLine("Anni di Servizio?"); //Check sulla validità dell'input come int int anniServizio = 0; do { ok = Int32.TryParse(Console.ReadLine(), out anniServizio); if (ok == false) { Console.WriteLine("Inserire un numero valido."); } } while (ok == false); //creazione del nuovo agente con i dati in input Agente agente = new Agente { Nome = nome, Cognome = cognome, CodiceFiscale = codiceFiscale, DataDiNascita = dataNascita, AnniDiServizio = anniServizio }; //aggiungo l'agente al database tramite la disconnected mode ADOMethods.AddNewAgent(agente); //Mostro la lista aggiornata degli agenti Console.WriteLine("Ecco la lista agenti aggiornata:"); Show(); }
public static bool AddNewAgent(Agente agente) { //Creo la connessione using (SqlConnection connection = new SqlConnection(connectionString)) { //Creo un nuovo data adapter da istruire SqlDataAdapter adapter = new SqlDataAdapter(); //Definisco il comando per inserire l'agente in input SqlCommand insert = new SqlCommand("INSERT INTO Agenti VALUES (@nome, @cognome, @codiceFiscale, @dataDiNascita, @anniDiServizio)", connection); insert.CommandType = System.Data.CommandType.Text; insert.Parameters.Add("@nome", SqlDbType.NVarChar, 255, "Nome"); insert.Parameters.Add("@cognome", SqlDbType.NVarChar, 255, "Cognome"); insert.Parameters.Add("@codiceFiscale", SqlDbType.NVarChar, 255, "Codice Fiscale"); insert.Parameters.Add("@dataDiNascita", SqlDbType.Date, 31, "Data di Nascita"); insert.Parameters.Add("@anniDiServizio", SqlDbType.Int, 100, "Anni di Servizio"); //insert.Parameters.AddWithValue("@nome", agente.Nome); //insert.Parameters.AddWithValue("@cognome", agente.Cognome); //insert.Parameters.AddWithValue("@codiceFiscale", agente.CodiceFiscale); //insert.Parameters.AddWithValue("@dataDiNascita", agente.DataDiNascita); //insert.Parameters.AddWithValue("@anniDiServizio", agente.AnniDiServizio); //Definisco il comando select per riempire la tabella SqlCommand select = new SqlCommand("SELECT * FROM Agenti", connection); select.CommandType = System.Data.CommandType.Text; //Creo il dataset da riempire con gli Agenti e istruisco l'adapter con i nuovi comandi DataSet agentiData = new DataSet(); adapter.SelectCommand = select; adapter.InsertCommand = insert; try { //Apro la connessione e ottengo i dati per riempire la tabella. Da qui lavoro in local fino all'update finale connection.Open(); adapter.Fill(agentiData, "Agenti"); //Creo una nuova riga da aggiungere alla tabella con i dati del nuovo agente da inserire DataRow nuovoAgente = agentiData.Tables["Agenti"].NewRow(); nuovoAgente["Nome"] = agente.Nome; nuovoAgente["Cognome"] = agente.Cognome; nuovoAgente["Codice Fiscale"] = agente.CodiceFiscale; nuovoAgente["Data di Nascita"] = agente.DataDiNascita; nuovoAgente["Anni di Servizio"] = agente.AnniDiServizio; //Aggiungo la riga alla tabella agentiData.Tables["Agenti"].Rows.Add(nuovoAgente); //Aggiorno il database attraverso l'adapter adapter.Update(agentiData, "Agenti"); Console.WriteLine("Agente aggiunto con successo!"); connection.Close(); //se l'update va a buon fine chiudo la connessione prima del return return(true); //ritorna un valore positivo } catch (Exception e) { Console.WriteLine(e.Message); connection.Close(); //se ci fosse qualche errore chiudo comunque la connessione prima del return return(false); } } }