Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Problema con le insert
venerdì 03 agosto 2007 - 20.20
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
_J_
Profilo
| Senior Member
273
messaggi | Data Invio:
ven 3 ago 2007 - 20:20
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.ConnectionStrings["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?
_J_
"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."
"Conosco me stesso? No, non parlo con gli estranei..."
nullatore
Profilo
| Junior Member
191
messaggi | Data Invio:
sab 4 ago 2007 - 11:54
per come stai usando tu il codice
>>adatt.SelectCommand.ExecuteNonQuery();
e
>>adatt.Fill(ds,"tabella");
fanno la stessa cosa e quindi 2 volte l'inserimento (ecco l'errore del vincolo PK).
Non credo ti serva il SqlAdapter in questo caso.
Fai cosi:
apri la connessione
mettici in mezzo:
SqlCommand sqlcom = new SqlCommand();
sqlcom.Connection=<inserisci qui il tuo oggetto connessione>;
sqlcom.CommandType = CommandType.StoredProcedure;
sqlcom.CommandText = "nome_sp";
sqlcom.Parameters.Add(new SqlParameter("@parametro1", SqlDbType.Int).Value = 3);
sqlcom.Parameters.Add(new SqlParameter("@parametro2", SqlDbType.Int).Value = 5);
sqlcom.Parameters.Add(new SqlParameter("@parametro3", SqlDbType.Int).Value = 7);
sqlcom.ExecuteNonQuery();
e chiudi la connessione.
~nullatore~
mai dire corto circuito virtuale
nullatore
Profilo
| Junior Member
191
messaggi | Data Invio:
sab 4 ago 2007 - 11:57
Io volevo chiederi invece il perchè dell'uso del metodo Server.HtmlEncode().
E' una domanda senza malizia, solo perche' io non l'ho mai usato...
~nullatore~
mai dire corto circuito virtuale
_J_
Profilo
| Senior Member
273
messaggi | Data Invio:
sab 4 ago 2007 - 16:35
ciao nullatore
io credevo che executenonquery lavorasse insieme al fill, cioè che i due si potessero usare assieme..
ho visto che tu hai dichiarato 'apertamente'
SqlCommand sqlcom = new SqlCommand();
sqlcom.Connection=<inserisci qui il tuo oggetto connessione>;
sqlcom.CommandType = CommandType.StoredProcedure;
sqlcom.CommandText = "nome_sp";
mentre io ho usato il configuration manager... in teoria dovrebbe essere lo stesso anche con executenonquery...
l'adapter lo usavo perchè, dopo l'inserimento, volevo riempire un datagrid con i recod man mano aggiunti... cmq proverò senza fill e poi ti dirò.. intanto grazie
Server.HtmlEncode() lo uso mentre prendo i parametri da alcune textbox, label ecc.. e serve per conservare la formattazione delle stringhe che si prelevano, senza vedere stringhe strane del tipo °,   ecc per codificare virgolette, spazi...
_J_
"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."
"Conosco me stesso? No, non parlo con gli estranei..."
_J_
Profilo
| Senior Member
273
messaggi | Data Invio:
sab 4 ago 2007 - 19:56
togliendo il fill lavora alla grande (grazie!)
se non fosse per i parametri commentati che mi stanno creando un mare di problemi quando li decommento... vedi il mio nuovo post e capirai..
sull'azzeramento del form e sul caching ti risponderò a breve, ho risolto prima 'sta cosa
grazie ancora!
_J_
"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."
"Conosco me stesso? No, non parlo con gli estranei..."
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !