저는이 문제에 대한 제 밧줄 끝에 있습니다. 다음 코드로 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
을 추가하려고 시도했습니다. Machine
및 General
모두 적용되지 않았습니다.
실종 신고가 분명합니다.
업데이트 : 분명히 FoxPro에 대해 이해할 수없는 부분이 있습니다. 명령 유형을 CommandType.TableDirect
으로 변경하고 명령 텍스트를 order
으로 전환하면 모든 행이 반환됩니다. 모든 통찰력은 인정 될 것이다.
응답 해 주셔서 감사합니다. 기계 및 일반 데이터 정렬은 동일한 결과를 산출했습니다. 흥미롭게도, _certain_ 테이블 중에서 선택할 수는 있지만 다른 테이블은 선택할 수 없습니다. 또한 내가 선택할 수없는 테이블 ...'CommandText' 속성을'order'로 바꾸고'CommandType'을'CommandType.TableDirect'로 수정하면 모든 행을 얻을 수 있습니다. where 절이 필요하기 때문에 나에게 많은 도움이되지는 않지만 흥미 롭다고 생각했습니다. 아, vfpoledb.dll의 버전은 9.0.00.5815입니다. 저는 이것이 가장 최근 버전이라고 생각합니다. 또한, 당신을 upvote하려고했지만, 나는 명성을, 미안해하지 않습니다. – bphdpt
VFP의 최종 버전은 7423이므로 이후 버전의 드라이버가있을 수 있습니다. –
@ TamarE.Granor, AFAIK 최신 버전은 9.0.00.5815입니다. 어디에서 7423을 찾을 수 있습니까?
내용이 비공개가 아닌 경우 해당 테이블을 압축하여 보낼 수 있습니까 (dbf + cdx 및 fpt가있는 경우이 테이블을 사용 가능한 테이블이라고 가정 함). 당신이 이메일을 보내고 싶다면, 에덴 도트 트렁크 –