2016-10-08 14 views
0

私は連絡先からIDを送信するために、連絡先を顧客に変換するために使用できるVisual Studioで連絡先情報フォームを使用していますちょうど他のフォームに作成され、これを行うには私はSCOPE_IDENTITY()を使用してIDを返すストアドプロシージャを作成しました。それはSQL Serverで動作し、正確にIDを返しますが、取得しようとすると、intを文字列に変換し、テスト用のラベルに0を書き込みます。SCOPE_IDENTITY()を使用してIDの値が0として返される

私のストアドプロシージャは次のとおりです。

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE PROCEDURE IdentityTest 
     @FirstName varchar(50), 
     @LastName varchar(50), 
     @id int output 
AS 
BEGIN 
     SET NOCOUNT ON; 

     INSERT INTO Employees (FirstName, LastName) 
     VALUES (@FirstName, @LastName) 

     SET @id = SCOPE_IDENTITY() 
     RETURN @id 
END 

私のform.aspx.csには、DBにアクセスする次のコードがあります。

protected void Button1_Click(object sender, EventArgs e) 
{ 
    SqlCommand cons = new SqlCommand("IdentityTest", cncon); 
    cons.CommandType = CommandType.StoredProcedure; 

    cons.Parameters.Add("@FirstName", SqlDbType.NVarChar); 
    cons.Parameters.Add("@LastName", SqlDbType.NVarChar); 
    cons.Parameters.Add("@id", SqlDbType.Int); 

    cons.Parameters["@FirstName"].Value = nom.Value; 
    cons.Parameters["@LastName"].Value = dirclie.Value; 
    cons.Parameters["@id"].Value = IdCliente; 

    string IdClientesString = IdCliente.ToString(); 

    cncon.Open(); 
    cons.ExecuteNonQuery(); 

    Label1.Text = IdClientesString; 
    cncon.Close(); 
} 
+0

この回答を参考にしてください - http://stackoverflow.com/a/290772/27825 –

答えて

0

はあなたのC#コードで出力パラメータとして@idパラメータを定義する必要があります。

SqlParameter idParam = cons.Parameters.Add("@id", SqlDbType.Int); 
idParam.Direction = ParameterDirection.Output; 

値を読み出すためにクエリを実行した後、次のものが必要です。

cons.ExecuteNonQuery(); 
int newIdValue = Convert.ToInt32(cons.Parameters["@id"].Value); 
+0

J試してみましたが、エラーは発生しませんでしたが、ラベルは0として読み込まれます。 – Marcus

関連する問題