2008-11-20 1 views
1

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

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 Driver] Внешняя таблица не в ожидаемом формате.

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

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

ответ

1

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

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 Двигатель

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

0

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

0

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

1

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

+0

Это сработало для меня. Я недостаточно понимаю Парадокс, чтобы понять, почему это работает. Например, я переместил местоположение файла PDOXUSRS.NET из C: \ в место, где, как я думал, у каждого есть разрешение, но это не помогло избежать решения «запустить как администратора». – 2012-03-02 08:41:25

3

Я имел такая же ошибка. Он появился, когда я начал проект 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()); 
} 

ConnectionString является общим:

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

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

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

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

+0

Другим решением было бы просто установить платформу Target в свойствах проекта на x86 (если это целесообразно). – 2015-01-27 02:02:59

 Смежные вопросы

  • Нет связанных вопросов^_^