Visualizzazione dei risultati da 1 a 3 su 3

Discussione: problema con le insert

  1. #1
    Utente di HTML.it L'avatar di _J_
    Registrato dal
    Apr 2007
    Messaggi
    218

    problema con le insert

    salve ragazzi,
    questo è il codice che uso per inserire un nuovo record all'interno di una tabella cittadino:

    protected void Button1_Click(object sender, EventArgs e)
    {
    string tutti = "ins_nuovo_cittadino";
    SqlConnection oConn = new SqlConnection(ConfigurationManager.ConnectionStrin gs["dati_generali"].ConnectionString);
    try
    {
    oConn.Open(); //apro la connessione...
    }
    catch
    {
    oConn.Close();
    oConn.Open(); //apro la connessione...
    }
    SqlDataAdapter adatt = new SqlDataAdapter(tutti,oConn);
    adatt.SelectCommand.CommandType = CommandType.StoredProcedure;

    adatt.SelectCommand.Parameters.Add(new SqlParameter("@cod_persona", SqlDbType.Int));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@primo_nome", SqlDbType.VarChar));
    //adatt.SelectCommand.Parameters.Add(new SqlParameter("@secondo_nome", SqlDbType.VarChar));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@cognome", SqlDbType.VarChar));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@sesso", SqlDbType.VarChar));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@data_ora_min_nascita", SqlDbType.DateTime));
    /* adatt.SelectCommand.Parameters.Add(new SqlParameter("@cod_istat_com_ita_nascita", SqlDbType.Int));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@cod_com_est_nascita", SqlDbType.Int));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@cod_istat_com_ita_prima_iscr", SqlDbType.Int));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@cod_com_est_prima_iscr", SqlDbType.Int));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@cod_padre", SqlDbType.Int));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@cod_madre", SqlDbType.Int));*/
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@cod_fiscale", SqlDbType.VarChar));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@prima_cittadinanza", SqlDbType.VarChar));
    /* adatt.SelectCommand.Parameters.Add(new SqlParameter("@seconda_cittadinanza", SqlDbType.VarChar));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@nr_atto_iscrizione", SqlDbType.Int));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@parte_i", SqlDbType.Int));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@serie_i", SqlDbType.VarChar));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@ufficio_i", SqlDbType.VarChar));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@volume_i", SqlDbType.Int));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@data_i", SqlDbType.DateTime));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@nr_atto_trascrizione", SqlDbType.Int));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@parte_t", SqlDbType.Int));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@serie_t", SqlDbType.VarChar));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@ufficio_t", SqlDbType.VarChar));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@volume_t", SqlDbType.Int));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@data_t", SqlDbType.DateTime));*/
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@cod_condizione", SqlDbType.VarChar));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@cod_titolo_studio", SqlDbType.Int));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@cod_professione", SqlDbType.Int));
    adatt.SelectCommand.Parameters.Add(new SqlParameter("@cod_ramo_attivita", SqlDbType.Int));

    adatt.SelectCommand.Parameters["@cod_persona"].Value = Server.HtmlEncode(TextBox1.Text);
    adatt.SelectCommand.Parameters["@primo_nome"].Value = Server.HtmlEncode(TextBox2.Text);
    // adatt.SelectCommand.Parameters["@secondo_nome"].Value = Server.HtmlEncode(TextBox3.Text);
    adatt.SelectCommand.Parameters["@cognome"].Value = Server.HtmlEncode(TextBox4.Text);
    adatt.SelectCommand.Parameters["@sesso"].Value = Server.HtmlEncode(Label1.Text);
    adatt.SelectCommand.Parameters["@data_ora_min_nascita"].Value = Server.HtmlEncode(TextBox5.Text);
    /* adatt.SelectCommand.Parameters["@cod_istat_com_ita_nascita"].Value = Server.HtmlEncode(Label2.Text);
    adatt.SelectCommand.Parameters["@cod_com_est_nascita"].Value = Server.HtmlEncode(Label3.Text);
    adatt.SelectCommand.Parameters["@cod_istat_com_ita_prima_iscr"].Value = Server.HtmlEncode(Label4.Text);
    adatt.SelectCommand.Parameters["@cod_com_est_prima_iscr"].Value = Server.HtmlEncode(Label5.Text);
    adatt.SelectCommand.Parameters["@cod_padre"].Value = Server.HtmlEncode(TextBox12.Text);
    adatt.SelectCommand.Parameters["@cod_madre"].Value = Server.HtmlEncode(TextBox13.Text);*/
    adatt.SelectCommand.Parameters["@cod_fiscale"].Value = Server.HtmlEncode(TextBox14.Text);
    adatt.SelectCommand.Parameters["@prima_cittadinanza"].Value = Server.HtmlEncode(TextBox33.Text);
    /* adatt.SelectCommand.Parameters["@seconda_cittadinanza"].Value = Server.HtmlEncode(TextBox15.Text);
    adatt.SelectCommand.Parameters["@nr_atto_iscrizione"].Value = Server.HtmlEncode(TextBox16.Text);
    adatt.SelectCommand.Parameters["@parte_i"].Value = Server.HtmlEncode(TextBox17.Text);
    adatt.SelectCommand.Parameters["@serie_i"].Value = Server.HtmlEncode(TextBox18.Text);
    adatt.SelectCommand.Parameters["@ufficio_i"].Value = Server.HtmlEncode(TextBox19.Text);
    adatt.SelectCommand.Parameters["@volume_i"].Value = Server.HtmlEncode(TextBox20.Text);
    adatt.SelectCommand.Parameters["@data_i"].Value = Server.HtmlEncode(TextBox21.Text);
    adatt.SelectCommand.Parameters["@nr_atto_trascrizione"].Value = Server.HtmlEncode(TextBox22.Text);
    adatt.SelectCommand.Parameters["@parte_t"].Value = Server.HtmlEncode(TextBox23.Text);
    adatt.SelectCommand.Parameters["@serie_t"].Value = Server.HtmlEncode(TextBox24.Text);
    adatt.SelectCommand.Parameters["@ufficio_t"].Value = Server.HtmlEncode(TextBox25.Text);
    adatt.SelectCommand.Parameters["@volume_t"].Value = Server.HtmlEncode(TextBox26.Text);
    adatt.SelectCommand.Parameters["@data_t"].Value = Server.HtmlEncode(TextBox27.Text);*/
    adatt.SelectCommand.Parameters["@cod_condizione"].Value = Server.HtmlEncode(Label6.Text);
    adatt.SelectCommand.Parameters["@cod_titolo_studio"].Value =Server.HtmlEncode(Label7.Text);
    adatt.SelectCommand.Parameters["@cod_professione"].Value = Server.HtmlEncode(Label8.Text);
    adatt.SelectCommand.Parameters["@cod_ramo_attivita"].Value = Server.HtmlEncode(Label9.Text);

    adatt.SelectCommand.ExecuteNonQuery();
    adatt.SelectCommand.Dispose();

    DataSet ds = new DataSet();
    adatt.Fill(ds,"tabella");
    oConn.Close();

    GridView1.DataSource = ds.Tables["tabella"].DefaultView;
    GridView1.DataBind();
    }


    alcuni parametri sono commentati perchè li userò più tardi...
    quando vado a riempire le casele di testo che forniscono i parametri e clicco sul button1 mi dice che c'è un errore perchè violo il vincolo di chiave primaria, e guardando il datatbase vedo che il record in effetti è già inserito.. quindi è come se io cercassi di inserire due volte lo stesso record, sebbene il form io lo compili una sola volta e clicchi sul pulsante una sola volta...
    ho provato ad usare all'inizio del button1_click il codice
    if (! ispostback)
    e stavolta l'0aggiornamento non lo fa proprio...

    e poi una cosa strana: avete notato l'uso del selectcommand sebbene io voglia implementare una insert?
    usando executenonquery non mi crea problemi, ma nel momento in cui metto insertcommand al posto di selectcommand mi fa capire che non riconosce il cambiamento...

    uso una stored per l'inserimento (non l'ho postata perchè non credo che il problema sia lì visto che i record li inserisce... a modo suo ma li inserisce...), inoltre uso sqlserver 2005 e c#


    è una reazione strana che non mi spiego... cosa succede e come posso risolvere?

  2. #2
    quel messaggio di errore sta ad indicare che la tua insert viola l'unicità di un campo.

    Sicuramente c'è qualche campo impostato come chiave primaria (quindi non duplicabile) oppure qualche altro campo impostato come indice non duplicabile, e tu mediante la tua insert provi a caricare un record che viola l'univocità del campo.
    Davide

  3. #3
    Utente di HTML.it L'avatar di _J_
    Registrato dal
    Apr 2007
    Messaggi
    218
    ciao,
    ho risolto eliminando il metod fill, perchè le istruzioni:

    1) adatt.SelectCommand.ExecuteNonQuery();

    2) DataSet ds = new DataSet();
    adatt.Fill(ds,"tabella");


    se non sbaglio fanno la stessa cosa, ed infatti ora mi fa gli inserimenti senza contestarmi nulla, se non fosse per i parametri commentati che mi creano problemi (ne ho parlato nel post 'parametri nulli':
    http://forum.html.it/forum/showthrea...readid=1151329)

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.