【问题标题】:Paradox Tables in C#C# 中的悖论表
【发布时间】:2008-11-20 11:20:22
【问题描述】:

我正在尝试将 Paradox 5 表读取到数据集或类似数据结构中,以便将其放入 SQL Server 2005 表中。我已经搜索了谷歌和 SO,但运气不佳。我试过 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;
}

这只是返回错误

ERROR [HY000] [Microsoft][ODBC Paradox Driver] 外部表不是预期的格式。

我也厌倦了 OELDB (Jet 4.0) 但得到相同的 External table is not in the expected format 错误。

我在 Data 文件夹中有 DB 文件和 PX(增长表的)...任何帮助都会非常有用。

【问题讨论】:

    标签: c# odbc paradox


    【解决方案1】:

    我遇到了同样的错误。它出现在我在 Win2008 64(以前的操作系统是 Win2003 32)上启动我的 C# 项目时。我还发现它在控制台应用程序中运行良好,并在 winforms 中给出了不同的错误。似乎问题来自在 64 位系统上工作的 32 ODBC 驱动程序的细节。 我的解决方案是:

    // 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();
    }
    

    这样做之后,您可以在执行应用程序期间每次需要打开和关闭连接,并且不会出现任何异常。

    【讨论】:

    • 另一种解决方案是简单地将项目属性中的平台目标设置为 x86(如果这样做合适的话)。
    【解决方案2】:

    也许这会对你有所帮助,

    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 数据库引擎

    (JDE) 不完全支持 Paradox,除非 Borland 数据库引擎

    (BDE) 也已安装。

    【讨论】:

      【解决方案3】:

      尝试以“以管理员身份运行”权限运行所有应用程序,尤其是以“以管理员身份运行”权限运行 VS.NET...我相信您的问题会得到解决

      【讨论】:

      • 这对我有用。我对 Paradox 的理解不够深入,无法知道为什么会这样。例如,我将 PDOXUSRS.NET 文件的位置从 C:\ 移动到我认为每个人都有权限的地方,但这无助于避免“以管理员身份运行”解决方案。
      【解决方案4】:

      这不是一个答案,而是一个问题:您尝试使用 C# 进行数据操作而不是使用 SQL Server 工具直接加载数据的任何特定原因? DTS 或 SSIS 之类的工具似乎更适合这项工作。

      【讨论】:

        【解决方案5】:

        谢谢,我试试看。我想使用 C#,这样我就可以将它放在一些网页上,而无需额外将它放在 SQL 服务器中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多