2015-01-26 1 views
0

ADO.NET을 한번도 사용하지 않았습니다. 저는 수동으로 실행하면 학생 번호를 받고 단일 학생을 반환하는 저장된 proc 파일을 가지고 있습니다.Stored Proc는 코드에서 모두를 반환하지만 수동으로 실행하면 단일 행을 반환합니다.

코드에서 실행하면 6000 명의 학생이 모두 반환됩니다. 코드 실행과 다른 점은 무엇입니까?

 DataTable dt = new DataTable(); 
     using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["My_DB"].ConnectionString.ToString())) 
     { 
      using (SqlCommand cmd = new SqlCommand("sk.My_StoredProc", con)) 
      { 
       using (SqlDataAdapter da = new SqlDataAdapter(cmd)) 
       { 
        cmd.CommandType = CommandType.StoredProcedure; 

        //Add Parameter values 
        cmd.Parameters.Add("@StudentNumber", SqlDbType.VarChar).Value = studentNumber; 
        cmd.Parameters.Add("@StudentNameFragment", SqlDbType.VarChar).Value = studentNameFragment; 
        cmd.Parameters.Add("@SchoolYear", SqlDbType.VarChar).Value = this.schoolYr; 

        con.Open(); 
        cmd.ExecuteNonQuery(); 

        da.Fill(dt); 
       } 
      } 
     } 
     return dt; 
+0

아마도 매개 변수 값이 제대로 설정되지 않았거나 (C# 코드에서) 어쩌면! 수동으로 실행 한 코드를 차이 DB에서 실행했으면 저장 프로 시저 코드를 표시하고 C# 코드에서 매개 변수에 할당 된 값을 설정하는 위치를 표시 할 수 있습니까? 또한 거기에서 cmd.ExecuteNonQuery()를 제거하려고한다. – jfun

답변

-2

ExecuteNonQuery - 실제로 SELECT로만 사용하도록되어 있지 않습니다. 업데이트, 삽입 또는 삭제 만 가능합니다. 그리고 그것은 MSDN에 따라 ... 행을 반환하지 않습니다 - 참조 링크를

https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery%28v=vs.110%29.aspx

+1

이것은 대답이다. 대답은 –

+0

이다. 나는 새로운 멤버이고 이것은 나의 첫 번째 대답이다. - 또는 내가 코멘트를 말해야한다 - 나는 그것이 어떻게 작동하는지 본다. 지금. – RisingSon

+0

안녕하세요. SO! 이 "질문"을 삭제하면 부정적인 포인트가 삭제됩니다. –

0

아래에 다음과 같이 오히려 ExecuteNonQuery는보다 SqlDataReader 개체를 사용해보십시오 :

con.Open(); 
SqlDataReader dr = cmd.ExecuteReader(); 
DataTable dt = new DataTable(); 
dt.Load(dr); 

가 ExecuteReader 당신이 읽을 수 있도록합니다 결과는 SQLCommand에서 설정합니다.

ExecuteNonQuery는 명령에 의해 영향을받는 DB의 행 수를 나타내는 정수 값만 반환합니다.

+0

필자는 마침내이 기능을 시도해 보았습니다. "이 명령과 관련된 열려있는 DataReader가 이미 닫혀 있습니다."라는 오류 메시지가 나타납니다. – BattlFrog

+0

두 번 이상 연결을 여는 것으로 의심됩니다. con.Open(); 한 번만 나타납니다. 이 코드에 최근 수정 사항을 게시 할 수 있습니까? –

+0

코드는 현재 OP에서 변경되지 않았습니다. 'using'문 때문에 연결을 구체적으로 닫아야합니다. 맞습니까? – BattlFrog

0

두 번째 매개 변수 'StudentNameFragment'가 null 대신 빈 문자열로 전달되었으므로 모든 것을 반환했습니다.

관련 문제