请问一下如何在C#中连接DBF文件?为这个问题头疼好几天了,总是提示一个问题
[b]ERROR [42000] [Microsoft][ODBC Visual FoxPro Driver]Command contains unrecognized phrase/keyword.[/b]以下是我的代码..麻烦各位老大看看
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.Odbc;namespace vfpTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                string table = @"D:\Work\Visual Studio 2010\Projects\Test\Test\data\yjs.dbf";
                string link = @"D:\Work\Visual Studio 2010\Projects\Test\Test\data";
                string connstr = @"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" +link + ";Exclusive=Yes;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO";
                OdbcConnection conn = new OdbcConnection(connstr);                //conn.ConnectionString = connstr;
                //conn.Open();                OdbcCommand cmd = new OdbcCommand();
                string sql = @"select * from  " + table;
                cmd.CommandText = sql;
                cmd.Connection = conn;                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
                MessageBox.Show("数据库连接成功");
                OdbcDataAdapter da = new OdbcDataAdapter(sql, conn);
                DataTable dt = new DataTable();
                da.Fill(dt);
                this.label1.Text = "总共" + dt.Rows.Count + "条记录";
            }
            catch (Exception ex)
            {                MessageBox.Show(ex.Message);
            }
        }
    }
}

解决方案 »

  1.   

    我给你出个也许不解决问题的方案,你可以试试,用dBaseIII的驱动试试.
      

  2.   

    没用过,胡乱说一句,希望有用。1、你打开就关上了,Adapter怎么办。建议你把conn.Close();移到try的最后边。另外,感觉cmd.ExecuteNonQuery();这个命令没什么用处,把它取消。  conn.Open();
      cmd.ExecuteNonQuery();
      conn.Close();
      MessageBox.Show("数据库连接成功");
    2、da.Fill(dt);我以前fill里边都是DataSet,没用过DataTable。你为何不用标准的方法?
    DataSet ds = new DataSet();
    da.fill(ds,"xyz");
      

  3.   

    Adapter会自动开关,执时前是开着的,执行前,也是开着的,执行前是关着的,执行时会开,执行完会关.
      

  4.   

    取决于你Connection String指定的驱动程序。