Как добавить столбец в файл .DBF? - PullRequest
3 голосов
/ 29 декабря 2011

Одна из проблем, с которыми я сталкиваюсь, заключается в том, что я не думаю, что у таблицы есть имя ... это просто файл .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();
    }
 }

Ошибка:

base {System.Data.Common.DbException} = {"ОШИБКА [42S02] [Microsoft] [ODBC dBASE Driver] Не удалось найти таблицу или ограничение."}

Ответы [ 3 ]

2 голосов
/ 29 декабря 2011

Я полагаю, что именем таблицы должно быть имя файла, а строка подключения должна указывать на папку, содержащую файл 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

1 голос
/ 29 декабря 2011

Это на самом деле правильный синтаксис

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

Однако, если ваше имя файла длиннее 8 символов, оно не найдет его.Несмотря на то, что я попытался использовать имя файла соответствующей длины, «Операция [не поддерживается] для таблицы, содержащей данные».

Различные ссылки в Интернете указывают на необходимость создания новой таблицыСкопируйте все поля.

0 голосов
/ 03 июля 2013

Попробуйте другого провайдера.

У меня он работал с провайдером Visual Foxpro conn.ConnectionString = @ "Provider = VFPOLEDB.1; Источник данных = Themes.dbf" + @ "\; Расширенные свойства = dBaseIV ";

Если драйвер не установлен на вашем компьютере, вы можете получить его здесь: http://www.microsoft.com/en-us/download/details.aspx?id=14839

...