Таблицы парадоксов в C # - PullRequest
1 голос
/ 20 ноября 2008

Я пытаюсь прочитать таблицу Paradox 5 в набор данных или симулированную структуру данных с целью помещения ее в таблицу SQL Server 2005. Я траул Google и ТАК, но без особой удачи. Я пробовал ODBC:

public void ParadoxGet()
{
    string ConnectionString = @"Driver={Microsoft Paradox Driver (*.db )};DriverID=538;Fil=Paradox 5.X;DefaultDir=C:\Data\;Dbq=C:\Data\;CollatingSequence=ASCII;";

    DataSet ds = new DataSet();
    ds = GetDataSetFromAdapter(ds, ConnectionString, "SELECT * FROM Growth");
    foreach (String s in ds.Tables[0].Rows)
    {
        Console.WriteLine(s);
    }
}
public DataSet GetDataSetFromAdapter(DataSet dataSet, string connectionString, string queryString)
{
    using (OdbcConnection connection = new OdbcConnection(connectionString))
    {
        OdbcDataAdapter adapter = new OdbcDataAdapter(queryString, connection);
        connection.Open();
        adapter.Fill(dataSet);
        connection.Close();
    }
    return dataSet;
}

Это просто возвращает ошибку

ОШИБКА [HY000] [Microsoft] [Драйвер ODBC Paradox] Внешняя таблица не соответствует ожидаемому формату.

Я также устал от OELDB (Jet 4.0), но получаю ту же Внешнюю таблицу не в ожидаемой ошибке формата.

У меня есть файл DB и PX (таблицы роста) в папке Data ... Любая помощь будет очень ценной.

Ответы [ 5 ]

3 голосов
/ 13 декабря 2012

У меня была такая же ошибка. Он появился, когда я запустил свой проект C # на Win2008 64 (предыдущая ОС была Win2003 32). Также я узнал, что он хорошо работает в консольных приложениях и выдает различные ошибки в winforms. Похоже, что проблема связана со спецификой 32 драйверов ODBC, работающих на 64-битных системах. Мое решение было:

// Program.cs
static void Main()
{
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        // it is important to open paradox connection before creating
        // the first form in the project
        if (!Data.OpenParadoxDatabase())
            return;
        Application.Run(new MainForm());
}

Строка подключения является общей:

string connStr = @"Driver={{Microsoft Paradox Driver (*.db )}};DriverID=538;
                   Fil=Paradox 7.X;DefaultDir=C:\\DB;Dbq=C:\\DB;
                   CollatingSequence=ASCII;";

После открытия соединения вы можете закрыть его в любом месте после создания первой формы (если вам нужно держать БД закрытым большую часть времени), например:

private void MainForm_Load(object sender, EventArgs e)
{
    Data.CloseParadoxDatabase();
}

После этого вы можете открывать и закрывать соединение каждый раз, когда захотите во время выполнения вашего приложения, и вы не получите никаких исключений.

1 голос
/ 14 октября 2011

Попробуйте запустить все приложения с правами «Запуск от имени администратора», особенно запустите VS.NET с «Запуск от имени администратора» ... и я уверен, что ваша проблема решена

1 голос
/ 20 ноября 2008

Может быть, это вам поможет,

http://support.microsoft.com/support/kb/articles/Q237/9/94.ASP?LN=EN-US&SD=SO&FR=1 http://support.microsoft.com/support/kb/articles/Q230/1/26.ASP

Похоже, что последняя версия Microsoft Jet Database Engine

(JDE) не полностью поддерживает Paradox, если только Borland Database Engine

(BDE) также установлен.

0 голосов
/ 24 ноября 2008

Спасибо, я попробую. Я хотел использовать C #, чтобы разместить его на некоторых веб-страницах, не добавляя дополнительный набор на сервер SQL.

0 голосов
/ 20 ноября 2008

Это не ответ, а скорее вопрос: какая конкретная причина, по которой вы пытаетесь использовать C # для манипулирования данными, а не инструменты SQL Server для прямой загрузки данных? Что-то вроде DTS или SSIS может показаться лучшим инструментом для работы.

...