여러 쿼리의 데이터를 동일한 데이터 소스에 채웁니다.
저자:Eve Cole
업데이트 시간:2009-07-01 16:14:59
DataSet은 코드 작성 시 컨트롤의 데이터 소스로 사용되는 경우가 많습니다. 일반적으로 컨트롤은 하나의 데이터 소스에만 바인딩될 수 있습니다. 데이터베이스에 대한 여러 쿼리 결과를 컨트롤에 바인딩하려면 여러 쿼리 결과를 동일한 데이터 원본에 채워야 합니다. 물론 이 기능은 테이블을 동적으로 그려서 구현할 수도 있지만 테이블을 동적으로 처리하는 것이 너무 번거롭다고 생각합니다. 이를 위해 다음과 같은 테스트를 진행하였고 테스트에 성공하였습니다. 이제 공유해드리겠습니다.
원리: 여러 쿼리의 결과를 동일한 DataSet의 동일한 테이블에 채우지만, 두 번 채울 때 필드는 동일한 별칭이어야 합니다. 그렇지 않으면 불필요한 NULL 행이 나타납니다.
코드는 다음과 같습니다:
1프라이빗 보이드 데이터빙()
2 {
3 문자열 sql1="xt_xq에서 xqid를 yhm으로 선택하고 xqmc를 zsxm으로 선택";//
4 string sql2="xt_zdb_style을 yhm으로 선택, 설명은 xt_zdb에서 zsxm으로 선택";//sql1 및 sql2는 동일한 필드 별칭 yhm 및 zsxm을 사용합니다.
5 (OracleConnection 연결 = new OracleConnection("Data Source=abeen;User Id=system;Password=abeen;"))을 사용하여
6 {
7 데이터세트 ds = new DataSet();
8번 시도
9 {
10 연결.열기();
11 OracleDataAdapter 명령 = new OracleDataAdapter(sql2,connection);
12 command.Fill(ds,0,5,"TableName");//처음으로 TableName에 데이터 채우기
13 명령 = new OracleDataAdapter(sql1,connection);
14 command.Fill(ds,"TableName");//두 번째로 TableName에 데이터 채우기
15
16 this.DataGrid1.DataSource=ds;//두 개의 채우기 결과는 ds의 TableName에 있습니다.
17 this.DataGrid1.DataBind();
18}
19 catch(System.Data.OracleClient.OracleException ex)
20 {
21 새로운 예외 발생(예: 메시지);
스물 둘 }
스물셋
스물넷 }
25}
http://www.cnblogs.com/abeen/archive/2006/11/21/567893.html