有两个途径
一个是用odbc。。我试验了很久没有成功,不过也把步骤发出来大家参考。
用odbc先要安装odbc_net这个文件,安装之后在默认文件夹)里有个microsoft.data.odbc.dll把这个加入到专案里。
然后
using microsoft.data.odbc
string sConnectionString;
sConnectionString = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=C:\\DOC\\PCS\\DBF\\invoice.dbf;Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO";
string sql = "select * from invoice.dbf";
OdbcConnection cnn = new OdbcConnection(sConnectionString);
cnn.Open();
OdbcCommand cmd = new OdbcCommand(sql, cnn);
string sts;
OdbcDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
sts = dr[0].ToString();
}
dr.Close();
但是我每次跑到cnn.open就不行了。抱错信息:ERROR [IM001] [Microsoft][ODBC Driver Manager] Driver does not support this function
我查了一下说是一个VFPODBC.DLL文件不够新需要新下。。网上的最新版本是6.1.86291我没下到,我下到一个比较新的版本但是没法用。所以就放弃了odbc的尝试。
第二个就是用oledb。这个比较简单。我是在csdb上发帖求助之后开始尝试这个的。
using System.Data.OleDb;
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=dBASE 5.0;Password=;User ID=;Data Source=C:\\DOC\\PCS\\DBF\\");
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.CommandText = "select * from invoice.dbf";
cmd.Connection = conn;
OleDbDataReader reader = cmd.ExecuteReader();
string sts;
while (reader.Read())
{
sts = reader[0].ToString();
}
reader.Close();
//查询,下面是插入
string sql = "insert into invoice.dbf (INVNO,INVDATE,INVAMT,PAYDATE,WORKNO,SMRNO,CONTCODE,WORKCOMP) VALUES('123456','02-04-2006','100.0','02-04-2006','32145','232','12','02-04-2006')";
cmd.CommandText = sql;
cmd.Connection = conn;
cmd.ExecuteNonQuery();