2016-07-11 9 views
0

저는이 문제에 대한 제 밧줄 끝에 있습니다. 다음 코드로 Microsoft OLE DB Provider for Visual FoxPro 9.0를 사용하여 로컬 호스팅 FoxPro에 디렉토리에 연결을 시도 : 예외가 발생하지 않는 코드를 실행VFPOleDb 스키마가 반환되었지만 C# 결과가 없습니다.

using (var con = new OleDbConnection(@"Data Source=C:\FoxDB;Provider=VFPOLEDB.1;")) 
{ 
    con.Open(); 
    using (var cmd = new OleDbCommand("select * from order", con)) 
    {    
     var dr = cmd.ExecuteReader(); 
     while (dr.Read()) 
     { 
      Debug.WriteLine(dr["ord_id"]); 
     } 
    } 
} 

하지만 제로 행이 것은 돌아왔다. 스키마는 데이터 리더를 조사 할 때 72 개의 필드가 있으므로 (데이터 테이블, 데이터 세트, 데이터 어댑터 등에서 모두 동일하게 수행했습니다. 모두 스키마를 반환하지만 결과는 0입니다) 스키마가 발견되어 반환됩니다. 3828 개 기록에 MSSQL 데이터베이스 결과로 같은 테이블에 액세스하고 끌어 SSIS 패키지를 구축

는에 들어갔습니다. 디스크에 order.dbf는 SSIS는 내가 당겨 한 결과로 흔들 것으로 보인다되는 8백84킬로바이트이다.

연결 문자열에 Collation Sequence을 추가하려고 시도했습니다. MachineGeneral 모두 적용되지 않았습니다.

실종 신고가 분명합니다.

업데이트 : 분명히 FoxPro에 대해 이해할 수없는 부분이 있습니다. 명령 유형을 CommandType.TableDirect으로 변경하고 명령 텍스트를 order으로 전환하면 모든 행이 반환됩니다. 모든 통찰력은 인정 될 것이다.

답변

1

같은 문제가 Foxpro와 똑같은 코드로 테스트되지 않아서 결과를 얻을 수 있다고 생각합니다. c : \ FoxDb에서 무료 테스트 테이블을 만들었습니다. 최신 VFPOLEDB 드라이버를 사용하고 있는지 확인하십시오. 테이블에 문제가있는 것처럼 보입니다.

BTW, 순서는 당신이 더 다 쓰고 키워드입니다 : 당신이 한대로 작동합니다 있지만

"select * from [order]" 

(VFP는 점에서 용서). 이 문제는 사용 된 데이터 정렬 순서에있을 수도 있습니다 (컴퓨터 이외의 데이터 정렬 시퀀스는 사용하지 않습니다. 터키어에서는 문제가 많으며 일부 다른 언어에서는 동일한 것으로 예상합니다).

+0

응답 해 주셔서 감사합니다. 기계 및 일반 데이터 정렬은 동일한 결과를 산출했습니다. 흥미롭게도, _certain_ 테이블 중에서 선택할 수는 있지만 다른 테이블은 선택할 수 없습니다. 또한 내가 선택할 수없는 테이블 ...'CommandText' 속성을'order'로 바꾸고'CommandType'을'CommandType.TableDirect'로 수정하면 모든 행을 얻을 수 있습니다. where 절이 필요하기 때문에 나에게 많은 도움이되지는 않지만 흥미 롭다고 생각했습니다. 아, vfpoledb.dll의 버전은 9.0.00.5815입니다. 저는 이것이 가장 최근 버전이라고 생각합니다. 또한, 당신을 upvote하려고했지만, 나는 명성을, 미안해하지 않습니다. – bphdpt

+0

VFP의 최종 버전은 7423이므로 이후 버전의 드라이버가있을 수 있습니다. –

+0

@ TamarE.Granor, AFAIK 최신 버전은 9.0.00.5815입니다. 어디에서 7423을 찾을 수 있습니까?
내용이 비공개가 아닌 경우 해당 테이블을 압축하여 보낼 수 있습니까 (dbf + cdx 및 fpt가있는 경우이 테이블을 사용 가능한 테이블이라고 가정 함). 당신이 이메일을 보내고 싶다면, 에덴 도트 트렁크 –