2012-04-20 10 views
-2

에 의해 반환 된 값을 읽는 방법 C#을 사용하여 TextBox에서 다음 절차에 따라 반환되는 값을 읽어야합니다.내 프로젝트 중 하나에서 SP

누구나 PLZ를 사용하여 @a를 읽는 코드를 C#을 사용하여 다음 절차에 따라 반환 된 TextBox에 쓸 수 있습니까? ??

create procedure [dbo].[Test]  
as  
declare  
@a numeric(5)  
begin  
set @a = (select COUNT(*) from Emp);  
return @a 
end 

내가 봤어이

SqlConnection cn = new SqlConnection("data source=localhost;initial catalog=acc;uid=sa;pwd=fantastic"); 
cn.Open(); 
SqlCommand cmd = cn.CreateCommand(); 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.CommandText = "Test"; 
Int32 i = Convert.ToInt32(cmd.ExecuteScalar()); 
textBox1.Text = i.ToString(); 
+0

내가 뭘 하려는지 내 질문에 plzz 편집 – kashif

+0

그리고 무슨 일을하지 못했습니까? 오류가 있었습니까? 예외? 네가 기대하지 않았던 (또는 네가 그런 일이 없었던) 일은 무엇인가? – Oded

+0

나는 실제 번호를 얻지 못하고있다. Count (*)가 23 일 때 0이되었습니다 – kashif

답변

2

- 부분적으로 머리를 밖으로 그것의 대부분, 붙여 넣기 - 복사,하지만 시도 :

SqlConnection con = new SqlConnection(connectionstring); 
SqlCommand com = new SqlCommand("test", con); 
com.CommandType = CommandType.StoredProcedure; 
SqlParamter returnVal = new SqlParameter("RETURN_VALUE", SqlDbType.Int); 
returnVal.Direction = ParameterDirection.ReturnValue; 
com.Parameters.Add(returnVal); 
com.Connection.Open(); 
com.ExecuteNonQuery(); 
int A = returnVal.value; 
con.Close(); 

ExecuteScalar는을 : "쿼리를 실행합니다 , 쿼리에서 반환 된 결과 집합의 첫 번째 행의 첫 번째 열을 반환합니다. " 필드가 아닌 반환 값을 반환합니다. 당신이 스칼라를 사용하려는 경우, 당신은 실제로과 같이 필드를 반환하기 위해 저장 프로 시저를 편집해야합니다

create procedure [dbo].[Test] 
as 
begin 

select (select COUNT(*) from Emp) 

end 
+0

riffnl 당신이 내 질문에 언급했는데 시도했는지에 따라 plzz 할 수 있니?/ – kashif

+0

아니요 : 편집을 읽습니다. – riffnl

+0

감사합니다 riffnl 그것은 일했다. 고마워요 – kashif

1

당신은합니다 (answer of riffnl 참조) 반환 매개 변수를 사용하거나에서 "복귀"를 변경할 수 있습니다 귀하의 sp를 "선택"하십시오.

ExecuteScalar는 반환 값을 catch하지 않고 처음 값인 select 만 반환합니다.

관련 문제