0

OdbcDataAdapter.Fill(DataTable) を実行すると、2 つの異なるエラーが発生することがあります。コード例は次のとおりです。

string odbc = "select item, upcno from table";
OdbcCommand cmd = new OdbcCommand(odbc, fconn);
OdbcDataAdapter oda = new OdbcDataAdapter(cmd);
oda.Fill(dt);
  1. System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

  2. System.InvalidOperationException: 行/列にデータが存在しません。

誰もこの問題を解決する手がかりを持っていますか?

4

1 に答える 1

0

質問から接続オブジェクトを取得する場所がわかりませんが、以下のようにすることができます。クラスレベルの接続を作成しないでください。必要なときに作成し、最後に適切に破棄できます。

public DataTable GetDataTableFromAdapter(string queryString)
{
    DataTable dt = new DataTable();
    using (OdbcConnection connection =
                new OdbcConnection(ConnectionString))
    {
        using (OdbcDataAdapter adapter =
                new OdbcDataAdapter(queryString, connection))
        {
            connection.Open();
            adapter.Fill(dt);
        }
    }
    return dt;
}

次のように呼び出します

DataTable dt = GetDataTableFromAdapter("select [item], [upcno] from [table]");
于 2013-06-06T17:21:03.160 に答える