2010-12-15 3 views
0

데이터베이스의 회사 이름 테이블에 바인딩 된 DropDownList가있는 ASP.NET 3.5 웹 폼이 있습니다.매개 변수를 사용하여 SqlDataSource SelectCommand에서 테이블 이름 구성

SELECT Registration, Telephone, Profile FROM {CompanyName}_VehicleData 

{회사 명}이되는 경우 다음의 GridView의의 SqlDataSource에 대한 SelectCommand에가되도록 또한, 나는 데이터베이스에서 데이터가있는 DropDownList에서 선택한 회사 이름에 따라 함께 업데이 트하려는의 GridView 바인딩 된 데이터가 DropDownList에서 선택된 항목. CommandDializer 및 Parameter Editor를 사용하여 DropDownList의 SelectedValue를 가리키는 ControlParameter를 만들었지 만 SelectCommand 쿼리를 작성하여 매개 변수를 '_VehicleData'에 연결하는 방법을 알지 못합니다. 이견있는 사람.

+0

코드를 게시하십시오. 어떻게 컨트롤을 묶는거야? –

+0

SqlDataSource에 컨트롤을 바인딩 할 수있는 Visual Studio 2010 IDE 마법사를 사용하여 바인딩되었습니다. –

답변

0

sqldatasource를 사용하는 경우 코드 뒤에 select 명령을 설정할 수 있습니다.

<sqldatasource>.SelectCommand = "select registration, telephone, profile " & _ 
           "from " & <dropdown>.selectedvalue & "_VehicleData" 
<sqldatasource>.SelectType = SqlDataSourceCommandType.Text 
+0

사용자 컨트롤에서 값을 덤핑하는 것은 매우 나쁜 생각입니다. 얻을 가능성이있는 것을 알고 있다고 생각한다고해도 악의적 인 데이터를 서버에 다시 게시하고 예상 한 것보다이를 작동시키는 방법이 있습니다. 들어오는 정보의 유효성을 항상 확인하고 제어 데이터를 SQL 문에 직접 주입하지 마십시오 (SQL 주입 공격을 얻는 가장 빠른 방법입니다). –

+0

@ 콜린, 잘 알고 있습니다. 해결책을 어떻게 제안 하시겠습니까? 선택 명령에 드롭하기 전에 드롭 다운 데이터 소스로 선택한 값을 확인 하시겠습니까? –

+1

매개 변수화 된 쿼리를 사용합니다.이 경우 연결된 값 (DropDown.SelectedValue + "_VehicleData")이 SQL 명령에 삽입되기 전에 INFORMATION_SCHEMA.TABLES 뷰를 사용하여 실제 테이블에 매핑되는지 여부를 평가하는 저장 프로 시저를 사용합니다. 또한 진정으로 이상한 문자가 포함될 경우를 대비하여 QUOTENAME (xxx)을 사용하여 테이블 이름을 올바르게 이스케이프 처리해야합니다. –

-1

@Colin : 당신은 용액으로 주입하기 전에 연쇄 값 (DropDown.SelectedValue + "_VehicleData가")가 INFORMATION_SCHEMA.TABLES 뷰를 사용하여 실제 테이블을 매핑할지 여부를 평가하는 프로 시저를 작성하는 것을 특징 SQL 명령. 저장된 proc에 대한 코드 스 니펫을 제공해 주시겠습니까?