说明:一直在网上找在asp.net(C#)中将DBF文件导入到SQL Server的方法,均不成功!后来找到网友sunrongxa(西康指挥部.net)在一个贴子中的解答,参照成功完成了。特此摘录!非常感觉网友sunrongxa(西康指挥部.net)。
注意:DBF要foxpro格式
vfp的先转成foxpro。in vfp: use database enter copy to your need database name foxplus
//connect to foxpro
string strConnFox="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+System.Web.HttpContext.Current.Server.MapPath("")+"//UpLoad"+";Extended Properties=dBase IV";
//connect to Access in this you need to change to sqlserver
string strConnAcc="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Web.HttpContext.Current.Server.MapPath("..//")+"zql.mdb" ;
OleDbConnection connFox = new OleDbConnection(strConnFox);
OleDbConnection connAcc = new OleDbConnection(strConnAcc);
OleDbDataAdapter adp1 = new OleDbDataAdapter("select dm,xm,xmjx,xb,mz,jg,csrq,brcf,whcd,bysj,xz,xxmc,zy,hsgz,bh,zw,zc,zm,zzmm,bzgz,gwgz from rsda",connFox);
OleDbDataAdapter adp2 = new OleDbDataAdapter("select dm,xm,xmjx,xb,mz,jg,csrq,brcf,whcd,bysj,xz,xxmc,zy,hsgz,bh,zw,zc,zm,zzmm,bzgz,gwgz from rsda",connAcc);
OleDbCommandBuilder cb = new OleDbCommandBuilder(adp2);
//删除原有的rsda
OleDbCommand cmdDelAll = new OleDbCommand("delete * from rsda where biaoji is null or biaoji=''",connAcc);
connAcc.Open();
cmdDelAll.ExecuteNonQuery();
cmdDelAll.Dispose();
DataSet myset = new DataSet();
adp1.Fill(myset,"rsdaFox");
adp2.Fill(myset,"rsdaAcc");
DataRow row,row1;
foreach(DataRow dr in myset.Tables["rsdaFox"].Rows)
{
row = myset.Tables["rsdaAcc"].NewRow();
foreach (DataColumn c in myset.Tables["rsdaFox"].Columns)
{
row[c.ColumnName] = dr[c.ColumnName];
}
myset.Tables["rsdaAcc"].Rows.Add(row);
}
adp2.Update(myset,"rsdaAcc");