12 messaggi dal 13 luglio 2010
Salve a tutti, ho questa stored procedure
ALTER PROCEDURE [dbo].[newsInsert]
  @titolo nvarchar(200),
  @testo text,
  @image bit = 0
AS
BEGIN
  SET NOCOUNT ON;
  INSERT INTO news (titolo, testo, image) VALUES (@titolo, @testo, @image)
  RETURN @@IDENTITY
END

Ed effettivamente da sql server management mi ritorna l'id autoincrementante

Da Asp.net ho


 protected void Page_Load(object sender, EventArgs e)
    {

    }
 protected void buttSubmit_Click(object sender, EventArgs e)
    {
       
SqlConnection conn = new SqlConnection(configuration.DbConnectionString);
SqlCommand s1 = new SqlCommand("newsInsert", conn);
s1.CommandType = System.Data.CommandType.StoredProcedure;
s1.CommandText = "newsInsert";
s1.Parameters.Add("@titolo", titolo);
s1.Parameters.Add("@testo", testo);
s1.Parameters.Add("@image", fu.HasFile);
            
conn.Open();
int res = (int)s1.ExecuteScalar();
conn.Close();

La stored procedure viene eseguita, perche' nella tabella compaiono i dati inseriti, ma il valore ritornato e' sempre null... qualcuno ha qualche idea?
Grazie
5.610 messaggi dal 09 febbraio 2002
Contributi
autovideo ha scritto:

qualcuno ha qualche idea?

Ciao, sì! Il metodo .ExecuteScalar, per definizione, restituisce il valore contenuto nel primo campo della prima riga del resultset. La tua stored procedure non crea un resultset vero e proprio (cioè, non restituisce records mediante una SELECT) e quindi l'.ExecuteScalar non ha un valore da leggere.

Il valore di ritorno puoi ottenerlo grazie ad un parametro a cui hai impostato la .Direction a ReturnValue.

//Qui definisco il parametro. Basta settargli il tipo e la direzione.
var valoreDiRitorno = new SqlParameter {DbType=DbType.Int32, Direction=ParameterDirection.ReturnValue};
//Lo aggiungo alla collezione dei parametri, insieme agli altri che avevi già aggiunto prima...
s1.Parameters.Add(valoreDiRitorno);
//...eseguo la stored procedure. Posso usare .ExecuteNonQuery dato che non produce alcun resultset
s1.ExecuteNonQuery();
//... e infine leggo il valore del parametro!
var risultato = valoreDiRitorno.Value;


ciao
Modificato da BrightSoul il 02 febbraio 2012 20.55 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC