Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [3.5 C#] Valori nulli da inserire in un db

    Salve, ho creato una form con delle textbox che deve inserire in un db dei dati, anche nulli. Il problema è proprio che, quando non metto nulla nella textbox, in realtà viene visto il valore come "" e non viene inserito nel db.
    Con una soluzione che non mi piace per nulla, ho messo dei null nelle text box se il loro testo è "", per i campi interi anche da problemi, e ho dovuto mettere degli zeri.

    Per caso conoscente una soluzione migliore? Allego il codice
    codice:
    protected void ButtonAggiungiCorso_Click(object sender, EventArgs e)
            {
                //Codice che accede al db e aggiunge i dati nel db
                //Crea un oggetto Connection per connettersi al db
                OleDbConnection conn = new OleDbConnection(connStr);
    
                //Comando per estrarre l'ID massimo
                OleDbCommand cmd_id_max = new OleDbCommand("SELECT Max(Id_Corsi) FROM tab_Corsi", conn);
    
                //Max conterrà il valore letto dalla query
                int max = 0;
                try
                {
                    conn.Open();
                    max = (int)cmd_id_max.ExecuteScalar();
                    max += 1;
                }
                catch (OleDbException)
                {
                    // Handle exception.
    
                }
                finally
                {
                    conn.Close();
                }
    
                //Se max!0 è andata bene la lettura dell'ID, continuo
                
                if (max!=0)
                    try
                    {
                        //Comando per inserire un nuovo ruolo
                        OleDbCommand cmd_inserisci = new OleDbCommand("INSERT INTO tab_Corsi" +
                          "(Id_Corsi, Nome_Corso, Crediti, Ssd, Tipo_Corso, Descrizione, Ore_Lezioni, Ore_Esercitazione, Ore_Laboratorio, Ore_Seminaio, Curriculum, Prerequisiti, Esame)" +
                          " Values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", conn);
    
                        if (TextBoxCrediti.Text == "")
                            TextBoxCrediti.Text = "0";
    
                        if (TextBoxSsd.Text == "")
                            TextBoxSsd.Text = null;
    
                        if (TextBoxTipoEsame.Text == "")
                            TextBoxTipoEsame.Text = null;
    
                        if (TextBoxDescrizione.Text == "")
                            TextBoxDescrizione.Text = null;
    
                        if (TextBoxOreLezioni.Text == "")
                            TextBoxOreLezioni.Text = "0";
    
                        if (TextBoxOreEsercitazioni.Text == "")
                            TextBoxOreEsercitazioni.Text = "0";
    
                        if (TextBoxOreLaboratorio.Text == "")
                            TextBoxOreLaboratorio.Text = "0";
    
                        if (TextBoxOreSeminario.Text == "")
                            TextBoxOreSeminario.Text = "0";
    
                        if (TextBoxCurriculum.Text == "")
                            TextBoxCurriculum.Text = null;
    
                        if (TextBoxPrerequisiti.Text == "")
                            TextBoxPrerequisiti.Text = null;
    
                        if (TextBoxEsame.Text == "")
                            TextBoxEsame.Text = null;
    
                        cmd_inserisci.Parameters.AddWithValue("@Id_Corsi", max);
                        cmd_inserisci.Parameters.AddWithValue("@Nome_Corso", TextBoxNomeCorso.Text);
                        cmd_inserisci.Parameters.AddWithValue("@Crediti", TextBoxCrediti.Text);
                        cmd_inserisci.Parameters.AddWithValue("@Ssd", TextBoxSsd.Text);
                        cmd_inserisci.Parameters.AddWithValue("@Tipo_Corso", TextBoxTipoEsame.Text);
                        cmd_inserisci.Parameters.AddWithValue("@Descrizione", TextBoxDescrizione.Text);
                        cmd_inserisci.Parameters.AddWithValue("@Ore_Lezioni", TextBoxOreLezioni.Text);
                        cmd_inserisci.Parameters.AddWithValue("@Ore_Esercitazione", TextBoxOreEsercitazioni.Text);
                        cmd_inserisci.Parameters.AddWithValue("@Ore_Laboratorio", TextBoxOreLaboratorio.Text);
                        cmd_inserisci.Parameters.AddWithValue("@Ore_Seminaio", TextBoxOreSeminario.Text);
                        cmd_inserisci.Parameters.AddWithValue("@Curriculum", TextBoxCurriculum.Text);
                        cmd_inserisci.Parameters.AddWithValue("@Prerequisiti", TextBoxPrerequisiti.Text);
                        cmd_inserisci.Parameters.AddWithValue("@Esame", TextBoxEsame.Text);
    
    
                        conn.Open();
                        cmd_inserisci.ExecuteNonQuery();
                        conn.Close();
                        Response.Redirect("/presidenza/successo.aspx");
    
                    }
                    catch (OleDbException)
                    {
                        conn.Close();
                    }
                }
    Grazie

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Io, da sempre, utilizzo una funzione che accetta un argomento stringa e restituisce un object.

    Faccio il trim della stringa. Se ottengo la stringa vuota, restituisco DBNull.Value, altrimenti restituisco la stringa.

    ps. funziona sempre
    Pietro

  3. #3
    Originariamente inviato da pietro09
    Io, da sempre, utilizzo una funzione che accetta un argomento stringa e restituisce un object.

    Faccio il trim della stringa. Se ottengo la stringa vuota, restituisco DBNull.Value, altrimenti restituisco la stringa.

    ps. funziona sempre
    Perfetto, era l'idea che cercavo, grazie

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 © 2026 vBulletin Solutions, Inc. All rights reserved.