2012-07-21 2 views
0

ADOX 카탈로그 클래스를 사용하여 빈 Ms 액세스 데이터베이스를 만들려고합니다. 코드가 제대로 작동하고 (내가 아는 한) 데이터베이스를 생성하지만 Windows 탐색기에서 데이터베이스를 열려고 할 때 , "name.accdb를 사용할 수 없습니다. 이미 사용중인 파일"오류 메시지가 나타납니다. 파일 디렉토리를 점검했고 name.idb 파일도 데이터베이스를 열지 않고 디렉토리에 나타났습니다. C# windows 폼 응용 프로그램을 닫으면 name.idb가 사라지고 데이터베이스를 열 수 있습니다. 다음은 ADOX를 사용하여 데이터베이스를 만드는 데 사용한 코드입니다.Adox 개체 처분 문제

public void CreateDatabase() 
    { 
     string databaseName = txtFileName.Text; 
     try 
     { 
      ADOX.Catalog cat = new ADOX.Catalog(); 

      if (!File.Exists(databaseName + ".accdb")) 
      { 
       cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data 
       Source=D:\\" + databaseName + ".accdb" + ";"); 
       cat = null; 
      } 
      cat = null; 
     } 
     catch (Exception e) 
     { 
      MessageBox.Show(e.Message, e.Source); 
     } 
    } 

또한 IDispaosable 인터페이스를 구현하여 cat 객체를 처리하려고했지만 아무 것도 변경되지 않았습니다. 이 문제를 해결할 수있는 방법을 알려주십시오. 사용자가 응용 프로그램을 종료 한 후에 응용 프로그램을 생성 한 후 데이터베이스를 열 수 있습니까?

감사합니다.

답변

1

아마도 개체를 해제해야합니다. Create를 호출 한 후 다음을 추가하십시오.

Marshal.FinalReleaseComObject(cat.Tables); 
Marshal.FinalReleaseComObject(cat.ActiveConnection); 
Marshal.FinalReleaseComObject(cat);