2013-06-19 6 views
0

저장 프로 시저 및 매개 변수를 사용하여 프로그래밍 방식으로 코딩 된 SqlDataSource를 가져 오려고합니다. 나중에이 SqlDataSource를 데이터 소스로 목록 상자에 할당하려고합니다. 그러나 저장 프로 시저에 제공되지 않은 매개 변수가 필요하다는 오류가 발생합니다. 나는 그것이 왜 나에게 그것을 공급하면서 오류를주는 지 이해하지 못한다. 내가 사용하고ASP.NET C# : 저장 프로 시저 및 매개 변수가있는 SqlDataSource

강령은 다음과 같습니다 : 내가 잘못 가고 어디

sqlDS = new SqlDataSource(); 
sqlDS.ConnectionString = DC.ConnectionString; 
sqlDS.SelectCommandType = SqlDataSourceCommandType.StoredProcedure; 
sqlDS.SelectParameters.Add("@aPara_Name", TypeCode.String, aPara_Value); 
sqlDS.SelectParameters[0].Direction = ParameterDirection.Input; 
sqlDS.SelectCommand = "usp_StoredProcedure_1"; 
sqlDS.DataBind(); 
this.Controls.Add(sqlDS); 

Listbox1.DataSource = sqlDS; 
Listbox1.DataTextField = "Title"; 
Listbox1.DataValueField = "Value"; 
Listbox1.DataBind(); //this is where I get the error saying that stored procedure requires a parameter that wasn't passed! 

은 누군가가 나를 인도 할 수 있습니까?

+0

로하시기 바랍니다 편집해야합니다? – Serge

+0

@Serge - 여기서 U는 PROCEDURE usp_StoredProcedure_1 @aPara_Name의 VARCHAR ATABLE FROM SELECT * AS (20) 을 만들'어디로 \t (SUBUNI = @aPara_Name) \t AND \t (SUBWON LIKE '____') ' – user1889838

+0

의 TypeCode. String ... 대신 SqlDbType (SqlDbType.Varchar)을 호기심에서 시도해 볼 수 있습니까? – Serge

답변

0

대신이 방법을 사용해도 되겠습니까?

   var com = new SqlConnection(DC.ConnectionString).CreateCommand(); 
       com.CommandType = CommandType.StoredProcedure; 
       com.CommandText = @"usp_StoredProcedure_1"; 
       com.Parameters.Add("@aPara_Name", SqlDbType.VarChar, 20).Value = aPara_Value; 

       var table = new DataTable(); 

       new SqlDataAdapter(com).Fill(table); 

       Listbox1.DataSource = table; 
+0

그래, 나는 비슷한 방식으로 해보려고 노력했다. 그리고 그것이 작동하는 방식으로, 내가 접근하고있는 방식으로 뭔가있는 것 같아서, 처음부터 그렇게했을 것이다. 많은 감사 – user1889838

+0

정답을 표시하는 것을 잊지 마십시오. 그것은 다른 사람들을 도울 수 있습니다. –

0

나는 똑같은 문제가있어서 결국 대답을 얻었습니다. "SelectParameters.Add()"메서드에서 매개 변수를 선언 할 때 단순히 "@"기호를 삽입하지 않아도됩니다. 그래서 당신이해야 할 것입니다 모두에서 다음 줄을 변경하는 것입니다 :

sqlDS.SelectParameters.Add("@aPara_Name", TypeCode.String, aPara_Value);

에 :

sqlDS.SelectParameters.Add("aPara_Name", TypeCode.String, aPara_Value);

희망이 도움이됩니다.

0

나는 @kumbaya에 동의합니다. 같은 문제가 발생했습니다. @을 삭제하고 정상적으로 작동합니다.

라인 4에서 귀하의 코드는

당신이 당신의 SP에 코드를 제공 할 수
sqlDS.SelectParameters.Add("aPara_Name", TypeCode.String, aPara_Value);