* .dbf (dBase IV) 파일을 사용하여 필요한 쉐이더 데이터 (쉐이프 파일)를 가져 오려고합니다.dBase IV에 이상한 오류가있어서 테이블 개체로 * .dbf를 얻을 수 없습니다.
이상한 점은 dBase JET OleDb 4.0 공급자가 그런 개체가 없다는 것을 말하고 있지만 존재합니다!
증명 :
이http://s21.postimg.org/eaj4h91uv/image.png
는 소스 코드 : 당신이 좋은 연결 문자열을 것으로 나타남
static void Test()
{
const string path = "C:\\buildings.dbf";
string conStr = String.Format("Provider = Microsoft.Jet.Oledb.4.0; Data Source = {0}; Extended Properties = \"dBase IV\"", Path.GetDirectoryName(path));
var connection = new OleDbConnection(conStr);
connection.Open();
var command = new OleDbCommand(string.Format("select NAME from {0}", Path.GetFileName(path)), connection);
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
var str = (string)reader["NAME"];
}
}
connection.Close();
}
static void Main()
{
try
{
Test();
}
catch (Exception exc)
{
Console.WriteLine(exc);
}
}
작은 경로가 들리지만 로컬 경로와 일치하는 생성 된 경로를 확인 했습니까? – Sakthivel
@codebrain proof는 스크린 샷에 있습니다. 연결 문자열은 JET/dBase 공급자가 path-file이 아닌 path-folder를 정확히 사용하고 SQL 쿼리 본문에서 파일을 정확하게 사용해야합니다. 'select SOMEFIELD from file.dbf' –