string table1 = @"E:\texy\ca1.dbf";
            string conn1 = @"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + table1;
            OdbcConnection con2 = new OdbcConnection(conn1);
            con2.Open();
            string strsql = "select * from " + table1;
            OdbcDataAdapter adapt = new OdbcDataAdapter(strsql, con2);
            OdbcCommandBuilder bu = new OdbcCommandBuilder(adapt);
            DataTable tb = new DataTable();
            adapt.Fill(tb);
            DataRow dr1 = tb.NewRow();
            dr1["imax10"] = "6";
            dr1["ib10"] = "7";
            tb.Rows.Add(dr1);
            adapt.Update(tb);错误:ERROR [42S02] [Microsoft][ODBC Visual FoxPro Driver]File '.dbf' does not exist.求大神帮忙!!!

解决方案 »

  1.   

    File '.dbf' does not exist.
    这错误很明显文件不存在。
      

  2.   

    楼主,“string conn1 = @"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + table1;”这句有问题!
    访问Microsoft Visual FoxPro正确的连接字符串:
    Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDb=指向 .dbf 文件的物理路径(目录)注意:是目录,而不是文件本身!
      

  3.   


    string table1 = @"E:\texy\ca1.dbf";
    这个是路径呀!连接没问题,数据都能查到,插入数据的时候有问题。
      

  4.   


    那它都不知道是哪个.dbf文件了么?
      

  5.   

    给你个别人写的:protected void Page_Load(object sender, EventArgs e)
        {
            System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection();
            string table = @"D:/aaa/code.dbf";
            string connStr=@"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + table + ";Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO";        conn.ConnectionString = connStr;
            conn.Open();
                   OdbcCommand cmd = new OdbcCommand();
            cmd.Connection = conn;
            string sql = "update " + table + " set other='2',rate=1.014 ";
            cmd.CommandText = sql;
            cmd.CommandType = CommandType.Text;
            cmd.ExecuteNonQuery();         sql = @"select * from " + table;
            OdbcDataAdapter da = new OdbcDataAdapter(sql,conn);
            DataTable dt = new DataTable();
            da.Fill(dt);
            this.GridView1.DataSource = dt.DefaultView;
            this.GridView1.DataBind();    }
    注意点:1 连接串的格式。2 所对应的表名必须要有路径。
      

  6.   

    还有一个:    class SendData
        {
            //这里演示的远程连接其他电脑上的DBF文件,我想本机就不需要说更多的了
             //SourceDB=这里就是路径名了,记住是文件夹的路径,不是DBF文件的路径,我开始傻就傻这上面了

            string strOdbcConn =@"PWD=;SourceType=DBF;UID=;Collate=Machine;Deleted=Yes;BackgroundFetch=Yes;Exclusive=No;
                                    Driver=Microsoft Visual FoxPro Driver;Null=Yes;SourceDB=\\nt6\f$\JSZhiWei\data;";        public void InsertData()
            {
                OdbcConnection odbcConn = new OdbcConnection(strOdbcConn);
                //string sqlInsert = "Insert Into table1(DateFrom, Num) Values({^2005-09-10},10)";
                //OdbcCommand odbcComm = new OdbcCommand(sqlInsert, odbcConn);
                //odbcComm.Connection.Open();
                //odbcComm.ExecuteNonQuery();
                //odbcConn.Close();            OdbcDataAdapter OdbcAda = new OdbcDataAdapter();
                OdbcAda.SelectCommand = new OdbcCommand();
                OdbcAda.SelectCommand.Connection = odbcConn;
                OdbcAda.SelectCommand.CommandType = CommandType.Text;
                OdbcAda.SelectCommand.CommandText = "select * from A111";            DataSet ds = new DataSet();
                OdbcAda.Fill(ds, "A111");
                //看看有没有数据
                int num = ds.Tables["A111"].Rows.Count;
            }
        }
      

  7.   

    又收到一个:
    http://hi.baidu.com/lostleaf/blog/item/7484b63e75a34efa828b1397.html所有的例子都表明:SourceDB是指目录名,而非表名!