2011-09-18 2 views
4

ADO.NET OLEDB 공급자를 사용하는 응용 프로그램을 작성하고 있습니다. 데이터베이스가 액세스입니다. 대부분의 DB 상호 작용은 DDL/DML SQL 쿼리를 통해 이루어집니다.연결된 테이블을 만드는 ADO.NET 방법

이제 연결된 테이블을 만들어야하며 ADO.NET만으로는 그렇게 할 수있는 방법이없는 것 같습니다. 간단한 DDL 쿼리 나 Access 시스템 테이블을 직접 조작하지 마십시오.

내 응용 프로그램에 추가 참조/종속성과 함께 ADOX 사용을 피하려고합니다. 누구든지이 문제를 해결할 방법을 알고 있습니까? 매우 감사.

현재 ADOX로 연결된 테이블을 만드는 방법은 다음과 같습니다.

using ADOX; 

public static void CreateLinkedTable(string sourceDB, string sourceTable, string targetDB, string targetTable) 
{ 
    Catalog cat = new Catalog(); 
    cat.let_ActiveConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + targetDB); 
    Table table = new Table(); 
    table.Name = targetTable; 
    table.let_ParentCatalog(cat); 
    table.Properties["Jet OLEDB:Create Link"].Value = true; 
    table.Properties["Jet OLEDB:Link Datasource"].Value = sourceDB; 
    table.Properties["Jet OLEDB:Remote Table Name"].Value = sourceTable; 
    cat.Tables.Append(table); 
} 
+0

작업을 수행하는 데 필요한 SQL 코드 만 이해할 수 있으면 ADO.NET을 통해 SQL 명령을 실행할 수 있습니다. 그렇지 않으면 ADOX를 피할 수 있을지 의심 스럽습니다. –

답변

3

추가 의존성을 피할 방법이 없습니다. 연결된 테이블은 MS ACCESS의 속성이며 ADO.NET은 사용자가 원하는 작업을 수행 할 수있는 방법을 알지 못합니다. 액세스는 받아 들일 수있는 SQL 명령을 통해이를 노출해야하며 VBA를 통해 노출되는 것은 아닙니다. 따라서 ADO.NET 연결을 통해 Access DB 내에서 제어 할 수 있지만 외부에서는 제어 할 수 없습니다. 해석 할 수있는 SQL 문을 발행하면됩니다.