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.求大神帮忙!!!
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.求大神帮忙!!!
这错误很明显文件不存在。
访问Microsoft Visual FoxPro正确的连接字符串:
Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDb=指向 .dbf 文件的物理路径(目录)注意:是目录,而不是文件本身!
string table1 = @"E:\texy\ca1.dbf";
这个是路径呀!连接没问题,数据都能查到,插入数据的时候有问题。
那它都不知道是哪个.dbf文件了么?
{
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 所对应的表名必须要有路径。
{
//这里演示的远程连接其他电脑上的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;
}
}
http://hi.baidu.com/lostleaf/blog/item/7484b63e75a34efa828b1397.html所有的例子都表明:SourceDB是指目录名,而非表名!