我试图通过OLEDB获得与Ado.Net相似的性能,但是没有成功。
我能得到的最好结果是比Ado.Net慢50%,所以我认为我做错了。我只需要向前阅读记录集,而无需更新。

    ADODB::_ConnectionPtr con;
    con.CreateInstance(__uuidof(ADODB::Connection) );
    con->ConnectionString = "...";
    con->Open("", "", "", ADODB::adConnectUnspecified);

    ADODB::_RecordsetPtr rs;
    rs.CreateInstance(__uuidof(ADODB::Recordset) );

    rs->Open(bstr_t("select * FROM BigTable"), _variant_t((IDispatch *)con), ADODB::adOpenForwardOnly, ADODB::adLockReadOnly, ADODB::adAsyncFetch);

    rs->MoveFirst();
    int count=0;

    while (! rs->EndOfFile)
    {
        ++count;
        rs->MoveNext();

    }

    rs->Close();

我正在使用Native Client OLEDB提供程序。
还有其他选项(.net除外)以更快的方式读取数据吗?

最佳答案

两种选择是

  • 使用ODBC:ODBC database sample
  • 使用C++中的OLE-DB:OLE DB for the ODBC ProgrammerCreating a SQL Server Native Client OLE DB Provider Application
  • 10-08 13:36