1

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;
}

これは単にエラーを返します

エラー [HY000] [Microsoft][ODBC Paradox Driver] 外部テーブルの形式が正しくありません。

OELDB (Jet 4.0) にも疲れましたが、同じ External table is not in the expected format エラーが発生します。

Data フォルダに DB ファイルと PX (Growth テーブルの) があります。

4

5 に答える 5

3

同じエラーが発生しました。Win2008 64でC#プロジェクトを開始したときに表示されました(以前のOSはWin2003 32でした)。また、コンソールアプリで正常に機能し、WinFormでさまざまなエラーが発生することもわかりました。問題は、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;";

接続を開いた後、最初のフォームを作成した後、任意の場所で接続を閉じることができます(ほとんどの場合DBを閉じたままにする必要がある場合)。次に例を示します。

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

その後、アプリケーションの実行中にいつでも接続を開いたり閉じたりすることができ、例外は発生しません。

于 2012-12-13T04:35:32.663 に答える
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 データベース エンジンの最新バージョンは、

(JDE) は、Borland データベース エンジンがインストールされていない限り、Paradox を完全にはサポートしていません。

(BDE)もインストールされています。

于 2008-11-20T11:46:54.697 に答える
1

「管理者として実行」権限ですべてのアプリケーションを実行してみてください。特に「管理者として実行」で VS.NET を実行してください。問題が解決されると確信しています。

于 2011-10-14T06:50:43.907 に答える
0

これは答えではありませんが、質問です。SQL Server ツールを使用してデータを直接読み込むのではなく、C# を使用してデータ操作を実行しようとしている特定の理由はありますか? DTS や SSIS のようなものは、仕事に適したツールのように思えます。

于 2008-11-20T16:23:36.153 に答える
0

ありがとう、やってみます。C# を使用したかったので、SQL サーバーに配置する余分なセットなしで、いくつかの Web ページに配置できます。

于 2008-11-24T11:25:41.260 に答える