public class DbfReader { private string _path; private OleDbConnection _connection; public DbfReader(string dbfPath) { _path = dbfPath; CheckFile(); } public OleDbDataReader GetReader() { try { _connection.Open(); OleDbCommand command = new OleDbCommand("select * from [" + _path + ']', _connection); return command.ExecuteReader(CommandBehavior.CloseConnection); } catch { return null; throw; } } public void Close() { _connection.Close(); } public void CheckFile() { _connection = new OleDbConnection("provider=vfpoledb.1;data source=" + _path); try { _connection.Open(); } catch { throw new EMException(1103); } finally { _connection.Close(); } } } public class DbfWriter { private string _path; public string TableName; private string _createCommand; private OleDbConnection _connection; private OleDbCommand _command; public DbfWriter(string dbfPath, string createCommand) { _path = dbfPath; _createCommand = createCommand; } public void Open() { int index = _path.LastIndexOf('\'); TableName = _path.Substring(index + 1); _connection = new OleDbConnection("provider=vfpoledb.1;data source=" + _path.Substring(0, index)); _command = new OleDbCommand("create table [" + TableName + "] " + _createCommand, _connection); try { _connection.Open(); _command.ExecuteNonQuery(); } catch { _connection.Close(); throw; } } public void Close() { _connection.Close(); } public void AppendData(string command) { _command.CommandText = command; _command.ExecuteNonQuery(); } }