如何使用C#从MySQL(2008)的INSERT返回@@ IDENTITY

时间:2012-03-23 14:37:42

标签: c# mysql identity sqlconnection datareader

  

可能重复:
  Return value from SQL Server Insert command using c#

我有这个代码 INSERT 在C#中的Arquivo表中的值:

  public int **_Salvar**(Arquivo arquivo)
    {
        SqlConnection connection = new SqlConnection(connectionString);
        try
        {
            DataTable dt = new DataTable();
            string procedure = "STP_Arquivo_INSERT";
            SqlCommand comand = new SqlCommand(procedure, connection);
            comand.CommandType = CommandType.StoredProcedure;

            comand.Parameters.AddWithValue("@sistema_id", arquivo._Sistema_id);
            comand.Parameters.AddWithValue("@arquivo_nome", arquivo._arquivo_nome);
            comand.Parameters.AddWithValue("@arquivo_formato",                  
                                                          arquivo._Arquivo_formato);
            comand.Parameters.AddWithValue("@arquivo_caminho", 
                                                          arquivo._Arquivo_caminho);
            comand.Parameters.AddWithValue("@arquivo_tamanho", 
                                                          arquivo._Arquivo_tamanho);
            comand.Parameters.AddWithValue("@arqiuvo_criacao", 
                                                          arquivo._Arqiuvo_criacao);
            comand.Parameters.AddWithValue("@arquivo_pasta", arquivo._Arquivo_pasta);

            connection.Open();
            SqlDataReader dataReader = comand.ExecuteReader();
           // IDataReader dr = comand.ExecuteReader();

           // return (int)dataReader.Read;

            int arq = -1;
            if (dataReader.Read())
            {
            //    arquivo._Sistema_id = (int)dataReader["sistema_id"];
            //    arquivo._arquivo_nome = dataReader["arquivo_nome"].ToString();
            //    arquivo._Arquivo_formato = dataReader["arquivo_formato"].ToString();
            //    arquivo._Arquivo_caminho = dataReader["arquivo_caminho"].ToString();
            //    arquivo._Arquivo_tamanho = dataReader["arquivo_tamanho"].ToString();
            //    arquivo._Arqiuvo_criacao = (DateTime)dataReader["arqiuvo_criacao"];
            //    arquivo._Arquivo_pasta = dataReader["arquivo_pasta"].ToString();
                arq = (int)dataReader["arquivo_id"];

            }
            return arq;
        }
        catch (Exception err)
        {
            throw (err);
        }
        finally
        {
            connection.Close();
        }
    }

我有这个StoredProcedure:

ALTER PROCEDURE [dbo].[STP_Arquivo_INSERT]
@sistema_id Int
, @arquivo_nome varchar(510)
, @arquivo_formato varchar (100)
, @arquivo_caminho varchar (510)
, @arquivo_tamanho varchar (20)
, @arqiuvo_criacao DateTime
, @arquivo_pasta VarChar (255)



AS

BEGIN

INSERT INTO 
    Arquivo
    ( 
        sistema_id 
        , arquivo_nome 
        , arquivo_formato 
        , arquivo_caminho 
        , arquivo_tamanho 
        , arqiuvo_criacao 
        , arquivo_pasta 

    )
VALUES
    ( 
        @sistema_id 
        , @arquivo_nome 
        , @arquivo_formato 
        , @arquivo_caminho 
        , @arquivo_tamanho 
        , @arqiuvo_criacao 
        , @arquivo_pasta 

    )

DECLARE @ret INT
    SELECT @ret =  ISNULL(@@IDENTITY, -1)
    RETURN @ret

END

我希望能够获得在SQl中返回的@@ IDENTITY。但我不能用这个INSERT(_Salvar)做到这一点。 DataReader没有返回值......

:'(

0 个答案:

没有答案