2009-09-16 4 views
0

큰 문제가 있습니다.C# + BDE + DBF 문제

많은 .dbf 파일 (~ 50000)이 있으며 오라클 데이터베이스로 가져와야합니다. 나는 다음과 같이 conncection 엽니 다

 OleDbConnection oConn = new OleDbConnection(); 
    OleDbCommand oCmd = new OleDbCommand(); 
    oConn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + directory + ";Extended Properties=dBASE IV;User ID=Admin;Password="; 
      oCmd.Connection = oConn; 
      oCmd.CommandText = @"SELECT * FROM " + tablename; 
     try 
      { 
       oConn.Open(); 
       resultTable.Load(oCmd.ExecuteReader()); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
       } 
oConn.Close(); 
oCmd.Dispose(); 
oConn.Dispose(); 

나는 루프를 읽은 다음 오라클에 삽입합니다. 다 좋아. :하지만 열 수없는 약 1000 개의 파일이 있습니다. 그들은 예외 "표가 아닙니다"를 올린다. 그래서 저는 구글과 Borland Database Engine을 설치했습니다. 이제 모든 일들이 잘 ....

이제 파일을 읽을 때 1024 파일 예외가 발생합니다 : "시스템 리소스가 초과되었습니다". 하지만 많은 무료 리소스가 있습니다. BDE를 제거해도 문제가 없지만 "시스템 리소스가 초과되었습니다"라는 오류는 발생하지 않지만 모든 파일을 읽을 수는 없습니다.

도와주세요.

추신 : ODBC를 사용해 보았지만 아무 것도 변경되지 않았습니다.

+0

, "나는 하나 개의 연결이 모든 시간을 사용하는 경우에도 문제가 남아있다" 또는 메모리/리소스 프로파일 러를 사용하여 실행할 수 있습니다. 행운을 비네 베스트. –

+0

이 프로세스에서 BDE를 정확히 사용하는 방법은 무엇입니까? 코드에 따라 Microsoft 드라이버를 직접 사용하므로 BDE에 액세스 할 수 없습니다. 유효하지 않음에 대해 불평하는 DBF 파일이 실제로 유효하다는 것을 어떻게 알 수 있습니까? 다른 프로그램에서 제대로 열 수 있습니까? –

+0

예. DBF 뷰어 2000에서 문제없이 열 수 있습니다. 은 내가 아는 한 BDE를 설치 한 후 마이크로 소프트 드라이버를 우선합니다. –

답변

1

dbf 파일에 연결하기 위해 Jet oledb 공급자를 사용하고 있는데 문제가 해결 될지 확실하지 않지만 dbf 파일에 연결하는 데 사용할 수 있다고 생각하는 an oledb provider for visual FoxPro이 있습니다.

+0

OleDb VFP와 동일한 문제 - "not a table". –

0

DBF (dBASE, Clipper, FoxPro)의 다양한 특징은 비주얼 dBASE 7과 함께 도입되고 BDE로 구동되는 DBF7과 비슷합니다. DBF 뷰어 2000은 DB7을 지원한다고 주장합니다. 형식은 여전히 ​​복잡하지 않기 때문에 아마도 네이티브 방식 일 것입니다. 어쩌면 모든 "not a table"DBF가 DBF7인지 확인하기 위해 볼 수있는 몇 가지 파일 속성/정보가있을 수 있습니다.

문제의 성격을 정의하는 것으로 밝혀 지더라도 특히 간단한 해결책은 없습니다. 이것이 일회성 계약이라면 아마도 루프를 실행하고 BDE가 설치되지 않은 채로 작동하지 않는 "1000"파일의 이름을 저장하고 BDE로 두 번째 패스를 수행 할 수 있습니다. 1024보다 큰 경우 세 번째 패스가 필요합니다.

0

구조가 다소 다른 DBF7을 비롯한 대부분의 DBF 파일에서 데이터를 추출 할 수있는 파이썬 모듈이 있습니다. 드라이버, OleDb 또는 ODBC가 필요하지 않습니다. 단지 파일을 읽습니다. 입력 파일을 매우 조심스럽게 검사하고 만족스럽지 않은 경우 "not a table"보다 훨씬 자세한 메시지를 제공합니다. 검사 용 샘플 파일을 몇 개 만들 수 있습니까?

0

나는 "System resource exceeded"메시지를 때때로 얻을 수있는 DBF 파일과 비슷한 문제가있었습니다.

나를 위해, solutuion는 BDE 주위에 델파이 DLL 래퍼 (표준 델파이 TQuery 호출)를 생성 및 상호 운용성을 사용하여 C#을에서이 DLL을 호출하는 것이 었습니다. 내가 도움이 될 수 없습니다 죄송합니다, 내가 가지고있는 유일한 조언은 당신이 사용하고있는 BDE의 버전과 메모리 누수 오류를 검색하는 것입니다