C# Fail to save row to datatable from FoxPro DBF

Deal all:
Followings are my code for connect to Foxpro DBF file.
It show me "external data table is not right format expected."
Could any help!
I thank you in advance.

using System;
using System.Data;
using System.Data.OleDb;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
    {
String m_database = "CO01M.dbf";
String m_sqlStr = "select * from " + m_database+" where row=100";
String m_otherStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=J:\VISW; Extended Properties=dBASE IV; User ID=Admin; Password=;";

        DataTable myDataTable = new DataTable();
        OleDbConnection m_ConnectTo1M = new OleDbConnection();
        m_ConnectTo1M.ConnectionString = m_otherStr;                                                                                   
        try
        { m_ConnectTo1M.Open();
          
          OleDbDataAdapter mDataAdpter = new OleDbDataAdapter(m_sqlStr, m_ConnectTo1M);              
          Console.WriteLine(@"Connect to J:\VISW\successfully!");
          Console.WriteLine("m_ConnectTo1M.Provider= "+m_ConnectTo1M.Provider);
          Console.WriteLine("m_ConnectTo1M.Database= "+m_ConnectTo1M.Database);
          Console.WriteLine("m_ConnectTo1M.DataSource= " + m_ConnectTo1M.DataSource);
          Console.WriteLine("m_ConnectTo1M.State= " + m_ConnectTo1M.State);
          DataSet myDataSet = new DataSet();
          mDataAdpter.Fill(myDataSet); //<<====Here is point error occured.
          //myDataTable = myDataSet.Tables[0];
          m_ConnectTo1M.Close();
          Console.WriteLine("m_ConnectTo1M.State= " + m_ConnectTo1M.State);
        }
        catch (Exception ex)
        { Console.WriteLine(ex.Message); }
    }
}

}
Screen Shot

0
edit delete
are you sure?
asked tom huang

4 answers

Try any of these values for the Extended Properties parameter in the connection string.

  • dBASE III
  • dBASE IV
  • dBASE 5.0
0
edit delete
are you sure?
answered Max Wikström

Dear max:
Thanks for your replying.
I replace provide 『Microsoft.Jet.OLEDB.4.0』with 『Microsoft OLE DB Provider for Visual FoxPro 9.0』. It couldn't work alone saving records to table.
I will try you suggestion on the morning of 18,Nov.2013.
Have you done that before ?
sincerely yours
tom

0
edit delete
are you sure?
answered tom huang

Did you get this to work? Please let us know if you found a solution.

0
edit delete
are you sure?
answered Max Wikström

Dear Max:
it is all done after copying hsp*.* from origin directory to test directory. I try to browse hsp.dbc and realized the reason why that is all about. hsp.dbc has information about what those dbf composite of and what type those fields are. I think FoxPro use hsp*.* files to manage dbf file. Nothing to do with drviers provider.
Now I concerned the speed of selecting data. It tooks 8 seconds to get this job done from selecting to display on console. I can't help thinking of the way FxoPro work with data selecting. I have to assign the order of index, then process query with right index key. There are no documents about how C# assigns the order of index( such as set order to ?).
I will Keep staying turn.
Sincerely yours
tom

0
edit delete
are you sure?
answered tom huang

Post an answer but please log in first

Post Answer
  1. Please log in to post answer

Similar Questions

Tagsfor this question

Forumall questions