C#里读写dbf文件

解决方案 »

  1.   

    方式一:  ---------------------------------------------------------------    .  安装ODBC  .NET  data  provider  http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/668/msdncompositedoc.xml      首先建立一个DSN指向DBF文件所在的目录,比如说叫MYDBF,然后在你的VS.NET  Project里面引用  using  Microsoft.Data.Odbc    再用以下代码建立OdbcConnection,  OdbcDataAdapter,  DataSet.    OdbcConnection  oCn  =  New  OdbcConnection("DSN=MYDBF")  OdbcDataAdapter  oDa  =  new    OdbcDataAdapter("SELECT  *  FROM  c:\myTable.dbf",  oCn)    DataSet  oDs  =  New  DataSet()  oDa.Fill(oDs,  "myTable")    ---------------------------------------------------------------  方式二:  ---------------------------------------------------------------    不用配odbc,那太不灵活了。  sSourceFileName  :  文件名  strConn:                    连接串  这只适用于:            dBASE  IV        如果想用别的可自己看着改把。      string  strConn=@"Provider=Microsoft.Jet.OLEDB.4.0;Data  Source="                                                              +sSourcePathName+@";Extended  Properties=""dBASE  IV;HDR=Yes;"";"  ;                                                                                        OleDbDataAdapter  adpt=new  OleDbDataAdapter  ("Select  *  From  ["+  sSourceFileName  +"]",strConn);                                                                                        DataSet  mySet=new  DataSet  ();                                                  adpt.Fill  (mySet);    ---------------------------------------------------------------  DataTable    DTtxt    //我假设你已经把txt中的数据,搞进着个dtTxt中了    string  strConn=@"Provider=Microsoft.Jet.OLEDB.4.0;Data  Source="                          +sSourcePathName                                      +@";Extended  Properties=""dBASE                                                IV;HDR=Yes;"";"  ;                                      OleDbDataAdapter  adpt=new  OleDbDataAdapter                                                  ("Select  *  From  ["+  sSourceFileName  +"]",strConn);  OleDbCommandBuilder  bd  =new  OleDbCommandBuilder  (tAdpt);    DataSet  mySet=new  DataSet  ();  adpt.Fill  (mySet);                DataRow  drDbf  =  mySet.Tables[0].NewRow();  foreach(DataRow  drTxt  in  DTtxt.Rows)  {          如果drDbf  和  drTxt;    格式一样可drDbf  =  drTxt;                    如果不对应的话;只能一列一列的付值了  }  mySet.Tables[0].Rows.Add(drDfb);  adpt.Update();              
      

  2.   

    dbf 好象是数据库文件呀 都要先引用某些空间  再操作吧?
      

  3.   

    to bingbingcha:
    3Q 偶测试下..过后揭帖
      

  4.   

    ==================借道问个问题:===============
    您好。我看了你们的回复的
    但是我现在对写入dbf仍然有点问题。
    请你们帮看一下:谢谢
    string strcon= "Provider = Microsoft.Jet.OLEDB.4.0; Data Source ="+Server.MapPath("data.mdb");
    OleDbConnection conn=new OleDbConnection(strcon);
    string sql="select * from DK1998";
    conn.Open();
    DataSet ds=new DataSet();
    OleDbDataAdapter adpt=new OleDbDataAdapter(sql,conn);
    adpt.Fill(ds);
    DataTable dt=ds.Tables[0];//从access中读出的一张表。
    string  strConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\\MyAspNet\\bank;Extended Properties=dBASE IV;";
    OleDbDataAdapter  adpt1=new  OleDbDataAdapter("Select * From qq",strConn);  
    OleDbCommandBuilder bd=new OleDbCommandBuilder(adpt1);  //Without the OleDbCommandBuilder this line would fail
    DataSet mySet=new DataSet();  
    adpt1.Fill(mySet,"n"); 
    DataRow  drDbf;
    foreach(DataRow dtrow in dt.Rows)   {  

    drDbf=mySet.Tables["n"].NewRow();//新建立一行  
             drDbf=dtrow;
     mySet.Tables["n"].Rows.Add(drDbf);   
    }  
    adpt1.Update(mySet);