2012-10-29 4 views
1

ASP.NET 데이터 그리드에 바인딩하기 위해 followng 코드를 사용하고 있습니다. 나는 다음과 같은 일을하지만 이것이 최선의 접근 방법인지 궁금해한다. 걱정스럽지 않은 점은 연결을 열지 않았으며 DataReader를 사용하지 않았다는 것입니다. 이 코드는 내 코드 숨김 페이지에 기록됩니다.asp.net 최상의 바인딩 접근 방식

   string strConn = ConfigurationManager.ConnectionStrings["SQL1"].ConnectionString; 
      SqlDataSource DataSource1 = new SqlDataSource(); 
      DataSource1.ConnectionString = strConn; 
      DataSource1.SelectCommand = "SELECT * FROM tblTruck where LocId = @LocID ";  

      DataSource1.SelectParameters.Add(new Parameter("LocId", System.TypeCode.String, value));     
      Grid1.DataSource = DataSource1.Select(DataSourceSelectArguments.Empty); 
      Grid1.Rebind(); 

답변

1

이 경우 DataSource 컨트롤은 연결 설정, 해제 및 반환 구문 분석의 내부 논리를 처리합니다. 이것 자체로는 매우 편리하지만 더 많은 제어가 필요할 경우 문제가됩니다.

문법적으로 SQL 코드를 UI에 하드 코딩하는 것은 결코 좋지 않습니다. 연결하는 대신 매개 변수를 사용하는 것이 좋습니다.

전체적으로 "최선의 방법"이 없습니다. 코드 취약성, 성능, 신뢰성, 디스플레이 복잡성 등과 같은 요소를 기반으로 솔루션을 사용자의 문제에 맞게 조정해야합니다.

개인적으로 데이터 소스 컨트롤이 마음에 들지 않지만 그리드를 구성하는 데 많은 시간을 소비하지 않으려는 경우 그리드 작업에 유용 할 수 있습니다.

SQLCommand는 매우 빠르고 최적화되어 있지만 사용하기 위해서는 많은 코드를 작성해야하며 다소 부서지기 쉽습니다.

DataAdapters/DataReaders/DataTables/DataSets는 SQLCommands보다 유지 관리를 작성하는 것이 다소 쉽지만 메모리에서 복잡 할 수 있으며 종종 올바르게 처리하지 못합니다.

Linq/ENF는 모두 쓰기 쉽고 유지 관리하기 쉽지만 때로는 개발자가 직접 생성 한 SQL을 사용하여 디버깅 문제를 해결하고 일반적으로 실행 속도가 느립니다 (종종 중요하지 않은 양만큼).

희망 사항은 귀하의 질문에 대한 답변을 제공합니다.

+0

당신이 언급했듯이 - 스타일러스 적으로, SQL 코드를 UI에 하드 코딩하는 것은 결코 좋은 생각이 아니지만, 연결하는 대신 매개 변수를 사용하는 것이 좋습니다. - 제가 작성한 것은 코드 숨김 페이지입니다. 그렇기 때문에 괜찮습니다. UI를 말할 때 .aspx 페이지 대 .aspx.cs 페이지를 언급하고 있습니까? –

+0

개인적으로 DB 백엔드 또는 설정 파일에 따라 저장 프로 시저로 푸시해야하므로 코드베이스를 재배치하지 않고도 조정할 수 있습니다. 한 번 앱을 작성한 인턴이 있었는데 다른 개발자가 그리드에 기반하여 가치가 중복된다는 관점을 엉망으로 만들 때까지는 효과가있었습니다. 뷰를 복구 할 때까지 DISTINCT를 패치하기 위해 스토어드 프로 시저에 DISTINCT를 추가 할 수있을 것이라고 생각했지만 SQL을 임베드 한 이후 코드베이스를 찾아야 만 모든 작업, 재 컴파일 및 재배포 방법을 파악할 수있었습니다. 데이터베이스는 시간이 지남에 따라 많이 바뀝니다. –

+0

@Fred Thomas- 감사합니다. - .aspx 파일 자체 내에 SQL을 갖는 것에 대한 귀하의 견해는 무엇입니까? 너도 좋은 연습이 아니라고 생각하니? .cs 파일에 저장하는 것이 더 좋습니까? (나는 저장 프로 시저에서 가장 좋은 방법을 알고 있지만 다른 유형에 대한 입력을 원한다는 것을 알고있다.) –

0

linq 및 엔티티 프레임 작업과 같은 프로그래밍의 다른 유형을 사용하여 귀하의 코드를 진행하는 것이 더 좋을 것이라고 생각합니다. 왜냐하면 그들은 프로젝트를 더 빠르고 안정적으로 만들기 때문입니다.

+0

예제로 엔터티 프레임 워크를 사용하도록 수정 해보십시오 –

+0

이것은 학습 할 엔터티 프레임 워크에 대한 최고의 참조입니다. //msdn.microsoft.com/en-us/library/bb386876.aspx –

관련 문제