如何添加列到.dbf文件

本文关键字:dbf 文件 添加 何添加 | 更新日期: 2023-09-27 18:18:58

我有一个问题是,我不认为表有名称…它只是一个。dbf文件

所以我一直在尝试这个:

public void SQLAlter(string dbffile, string ColumnName )
{
   //dbffile is "C:'MAPS'WASHINGTON'TLG_ROADS_L.DBF"
   //ColumnName is "State"
   if (File.Exists(dbffile))
   {
        System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection();
        conn.ConnectionString = @"DSN=dBase Files";
        conn.Open();
        System.Data.Odbc.OdbcCommand comm = new System.Data.Odbc.OdbcCommand();
        comm.CommandText = "ALTER TABLE " + dbffile + " ADD COLUMN " + ColumnName + " VARCHAR(1024)";
        comm.ExecuteNonQuery();
    }
 }

错误是:

{System.Data.Common基地。dbeexception} = {"ERROR [42S02][Microsoft][ODBC dBASE Driver]找不到表或约束。"}

如何添加列到.dbf文件

我认为表名应该是文件名,连接字符串应该指向包含dbf文件的文件夹。

var path = Path.GetDirectoryName(dbffile);
var tableName = Path.GetFileName(dbffile);
// ...
conn.ConnectionSTring = @"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" + path;
comm.CommandText = "ALTER TABLE " + tableName + //...

查看connectionstrings.com: http://connectionstrings.com/dbf-foxpro

这实际上是正确的语法

comm.CommandText = "ALTER TABLE " + dbffile + " ADD COLUMN " + ColumnName + " VARCHAR(1024)";

但是如果你的文件名超过8个字符,它将找不到它。尽管我尝试了一个适当长度的文件名,但"在包含数据的表上不支持操作"。

各种互联网链接似乎表明,必须创建一个新表,并复制所有的字段。

尝试其他提供商。

它在Visual Foxpro提供程序中为我工作conn.ConnectionString = @"Provider=VFPOLEDB.1;数据源=主题。dbf" + @"';扩展属性=dBase IV";

如果你的机器上没有安装驱动程序,你可以在这里得到它:http://www.microsoft.com/en-us/download/details.aspx?id=14839