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 1.0/1.1
Query sql
domenica 07 novembre 2004 - 16.27
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
mon78
Profilo
| Junior Member
167
messaggi | Data Invio:
dom 7 nov 2004 - 16:27
Ciao a tutti; ho una web form con delle caselle di testo e un pulsante; l'utente riempie le caselle di testo e clicca sul pulsante; a questo punto si deve eseguire un query sql che inserisce una riga in una tabella(PROGETTO) di un database sql e mi deve estrarre l'id del progetto appena inserito; ho creato una transazione sql fatta così:
CREATE PROCEDURE inserisciprogetto
@nome nvarchar(50),
@datai datetime,
@dataf datetime,
@datac datetime,
@StatoAvanzamento nvarchar(50),
@Descrizione nvarchar(1050),
@id_progetto int output
AS
Begin Tran
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
INSERT INTO PROGETTO (nome, Dt_inizio, Dt_Fine, Dt_Creazione, StatoAvanzamento, Descrizione, Visibile)
VALUES (@nome, @datai, @dataf, @datac, @StatoAvanzamento, @Descrizione, '1')
select @id_progetto= (SELECT MAX(IDProgetto) from PROGETTO)
commit tran
GO
Nella web form in corrispondenza del clic del pulsante ho inserito questo codice:
string StringaConnessione = ConfigurationSettings.AppSettings["conn"];
//Apre la connessione al Database
SqlConnection cntDatabase= new SqlConnection(StringaConnessione);
cntDatabase.Open();
SqlCommand cmd= new SqlCommand("inserisciprogetto",cntDatabase);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@nome",TextBox1.Text);
cmd.Parameters.Add("@datai",TextBox2.Text);
cmd.Parameters.Add("@dataf",TextBox2.Text);
cmd.Parameters.Add("@StatoAvanzamento","");
cmd.Parameters.Add("@Descrizione",TextBox4.Text);
cmd.Parameters.Add("@datac",TextBox5.Text);
SqlParameter param=new SqlParameter("@idprogetto",SqlDbType.Int);
param.Direction = ParameterDirection.Output;
string progetto = (string)param.Value;
cmd.ExecuteNonQuery();
cntDatabase.Close();
Quando eseguo l'applicazione, nel browser internet explorer, al clic sul pulsante non avviene l'inserimento di una nuova riga nella tabella, e mi compare l'errore:
La procedura 'inserisciprogetto' richiede il parametro '@id_progetto', che non è stato specificato.
Nn capisco cosa devo fare; mi potete aiutare x favore? grazie mille
mon78
Profilo
| Junior Member
167
messaggi | Data Invio:
dom 7 nov 2004 - 17:27
Scusa ho sbagliato a scrivere l'ultima parte della query; nn è
select @id_progetto= (SELECT MAX(IDProgetto) from PROGETTO)
ma
set @id_progetto= (SELECT MAX(IDProgetto) from PROGETTO)
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
dom 7 nov 2004 - 23:41
Manca una parte.
Tu hai creato un nuovo SqlParametere con scritto appunto "new SqlParameter", ma ti sei dimenticato di aggiungerlo alla Collection e quindi ti segnala giustamente l'errore che non trova il parametro.
cmd.Parameters.Add("@idprogetto.... ecc.
Sto sbagliando io oppure dovrebbe funzionare così ?
Se non aggiungi tutti i parametri alla collection poi richiamando la Stored Procedure non li trova tutti e quindi non può valorizzare i valori di ritorno.
ciao
david
unodidue
Profilo
| Newbie
28
messaggi | Data Invio:
lun 8 nov 2004 - 09:01
Io per farmi restituire in automatico un campo ID in una store procedure utilizzo l'istruzione @@IDENTITY, secondo me molto utile.
Ciao
Francesco
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 !