2017-11-16 5 views
0

두 값을 저장하려면 테이블에 @name@pwd이 필요합니다.이 경우 aspx 페이지에서 다음 코드를 사용할 수 있습니다.C#에서 저장 프로 시저를 실행하는 함수에 SqlParameter를 전달하려고합니다.

public void save1() 
{ 
    try 
    { 
     using (SqlConnection con=new SqlConnection(ConfigurationManager.ConnectionStrings["myCon"].ConnectionString)) 
     { 
      using(SqlCommand cmd = new SqlCommand("SP_TEST",con)) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Parameters.Add("@name", txtUname.Text); 
       cmd.Parameters.Add("@pwd", txtPwd.Text); 

       cmd.ExecuteNonQuery(); 
      } 
     } 
    } 
    catch (Exception ex) 
    { } 
} 

하지만

public void save1(List<SqlParameter> param) 

public void save1() 

로부터 따라서

List<SqlParameter> param = new List<SqlParameter>(); 
param.Add(new SqlParameter("@name", uname)); 
param.Add(new SqlParameter("@pwd", pwd)); 

같은 단일 List<SqlParameter> 변수로서 상기 함수 변화의 선언이 두 변수를 전달할

하지만 내 문제는이 두 변수를이 param에서 추출한 다음 cmd 변수에 추가하는 방법을 모른다는 것입니다. 도움이 필요해.

+0

을 A ['SqlParameterCollection']에 대한 작업 (https://msdn.microsoft.com/en-us/library/ 것 같은데 system.data.sqlclient.sqlparametercollection) –

+0

'foreach' 루프를 찾습니다. –

+1

루프하는 법조차 모르겠다 고 생각하기 어렵습니다. – Will

답변

-1

for 루프를 사용하여 목록의 각 개별 매개 변수에 액세스 할 수 있습니다.

(흥미 i = 0, i < parameter.Count, i ++) { // var param1 = param [i];

public void Save1(List<SqlParameter> param) 
{ 
    try 
    { 
     using (SqlConnection con = new SqlConnection(ConfigurationManager 
      .ConnectionStrings["myCon"].ConnectionString)) 
     { 
      using (SqlCommand cmd = new SqlCommand("SP_TEST", con)) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 
       foreach (var item in param) 
        cmd.Parameters.Add(item); 
       cmd.ExecuteNonQuery(); 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     /*...*/ 
    } 
} 

그런 PARAM이 호출에 액세스 할 수 : 당신은 단지 두 개의 매개 변수가있을거야 알고 있다면 }

0

cmd.CommandType = CommandType.StoredProcedure; 
cmd.Parameters.Add(param[0]); 
cmd.Parameters.Add(param[1]); 
cmd.ExecuteNonQuery(); 
+0

두 변수 @Mohamed가 아니라 마침내 foreach (var p in param)를 사용하여 만들었습니다. { cmd.Parameters.Add (p); }' –

+0

네, 괜찮습니다. 게시물에 질문에 대한 답변이 있으면 pls가 답을 표시합니다. 두 개 이상의 게시물이 도움이된다면 StackOverflow가 더 도움이되도록 그들을 upvoted하시기 바랍니다. –

1

이 저장 보이는 기능과 같이 가지고 사용할 수 있습니다 루틴뿐만 아니라 Save1 (..) 함수는 다음과 같습니다.

public/*private*/ List<SqlParameter> param = new List<SqlParameter>(); 

마지막으로, 당신의 호출 루틴은 다음과 같은 저장 1 (..)를 호출합니다

string uname = "..."; 
string pwd = "..."; 
param.Add(new SqlParameter("@name", uname)); 
param.Add(new SqlParameter("@pwd", pwd)); 
Save1(param);