2010-04-22 4 views
0

로컬 기반 데이터 저장 (XML 파일) 또는 SQL Server 기반 중에서 선택할 수있는 옵션이 있습니다. xml 파일에 로컬 데이터를 저장하는 응용 프로그램의 형식화 된 데이터 집합을 오래 전에 만들었습니다.C# SQL 데이터 어댑터 기존 입력 된 데이터 집합 채우기

이제 서버 기반 버전과 로컬 버전간에 변경되는 bool이 있습니다. true이면 내 응용 프로그램이 SQL Server에서 데이터를 가져옵니다. ,

는 잘 모르겠어요하지만 SQL을 어댑터의 채우기 방법이 내 로컬에서 (카테고리에 dbo.Categories에서 내 데이터를 작성해야

SqlCommand cmd = new SqlCommand("Select * FROM dbo.Categories WHERE CatUserId = 1", _connection); 
       cmd.CommandType = CommandType.Text; 

       _sqlAdapter = new SqlDataAdapter(cmd); 
       _sqlAdapter.TableMappings.Add("Categories", "dbo.Categories"); 
       _sqlAdapter.Fill(Program.Dataset); 

기존 스키마에 데이터를 채울 수없는 것 같다 형식화 된 데이터 집합). 하지만 그렇지 않습니다. 이름이 "Table"인 새 테이블을 만듭니다. 기존 스키마를 처리 할 수없는 것 같습니다.

알아낼 수 없습니다. 문제가 어디에 있습니까?

btw. 물론 내가하는 데이터베이스 요청은 그다지 유용하지 않습니다. 테스트 용으로 단순화 된 버전 일뿐입니다 ...

답변

1

사용중인 채우기 오버로드는 데이터 세트를 전달할 때 항상 제공된 데이터 세트에서 "테이블"(MSDN)이라는 새 DataTable을 만듭니다. 당신의 DataTable의 이름이 "카테고리"입니다 가정

_sqlAdapter.TableMappings.Add("Table", "Categories"); 

(MSDN) :

그래서, 난 당신이 중 하나가 당신의 TableMapping을 변경할 필요가 있다고 생각합니다.

또는 TableMappings을 사용하지 말고 채우려는 해당 DataSet의 DataTable 이름 (MSDN)을 두 번째 인수로 제공하십시오. 일반적으로 사용하는 접근 방식은 DataSet (MSDN) 대신 채우려는 DataTable 자체를 전달하는 것입니다.

+0

문제는 이미 기존 데이터 스키마가 있음입니다. 그러나 테이블에는 SQL 데이터베이스의 테이블과 다른 이름이 있습니다. 그래서 내가 sql 데이터베이스를 TableMapping 로컬 데이터 집합 스키마와 일치하도록 만들려고했습니다. 왜 이런 식으로하는지 묻지 마십시오. 하지만 서버에서 테이블의 이름을 바꾸는 대신 작업해야한다고 생각합니다. –

+0

@Rene - 나는 당신이 어떤 테이블의 이름을 바꿀 필요가 있다고 제안하지 않았다. 내 대답에서 두 번째 링크를 확인 했습니까? SQL 데이터베이스의 테이블 이름에는 DataSet의 DataTable과 다른 이름이 필요하지 않습니다. 내가 준 두 번째 링크의 그림 1을 참조하십시오. – AdaTheDev

+0

아, 죄송합니다, 당신의 권리. 나는 그것을 시험해야한다. 좋은 링크 3. 열 이름과 함께 작동되기를 바랍니다. 해결 방법이지만 TableMapping을 사용할 때의 문제는 해결되지 않습니다. 그러나 그것은 해결책입니다. 나는 그것을 시도 할 것이다. –

0

시도해보십시오.하지만을 시도해보십시오. 그렇지만 열 매핑도 추가해야합니다. btw, 당신은 형식화 된 dataadapter를 만들려고 할 수 있습니다, 그건 쓸모없는 일이지만, 거기에서 매핑을 취할 수 있습니다.

+0

또한 ColumnMappings을 가지고 있지만 더 좋게 작동하지 않습니다. 그것은 단지 이상합니다. TableMappings Add Parameters를 설정하는 방법은 중요하지 않습니다. 항상 나는 TableMapping에서 이름 대신 "Table"을 얻습니다. –

관련 문제