【发布时间】:2013-07-03 21:17:15
【问题描述】:
我遇到的一个问题是,我认为该表没有名称......它只是一个 .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.DbException} = {“错误 [42S02] [Microsoft][ODBC dBASE 驱动程序] 找不到表或约束。"}
【问题讨论】:
-
dbffile的值是多少,是否存在?
-
@Rob A 我更新了我的问题,简短回答是。
-
@marc_s - ODBC 根据连接字符串中
DSN的值将命令转换为函数调用或供应商特定的 SQL。 -
@marc_s,您实际上可以在 DBF 文件上使用 SQL,有一个名为 Visual Fox Pro 的“小”Microsoft 程序,它可以做的远远超过它本来应该做的。如果有人建议您使用它,请尖叫并跑一英里!另外,Python 等可以与几乎与 SQL DB 相同的 DBF 进行交互,所以我不明白为什么 C# 不能——我不知道如何。