微软访问数据库 - “记录太大”异常

时间:2013-03-11 13:54:08

标签: c++ database mfc

我有一些从MS Access数据库中读取的代码。该代码如下:

CDatabase database;
CString sDriver = "MICROSOFT ACCESS DRIVER (*.mdb)";
CString sDsn;
CString sFile = "MyDB.mdb";
CString sField;

// Build ODBC connection string
sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s", sDriver, sFile);
TRY
{
    // Open the database
    database.Open(NULL, false, false, sDsn);

    // Allocate the recordset
    CRecordset recset(&database);

    // Execute the query
    recset.Open(CRecordset::forwardOnly, "SELECT NAME FROM INFOTABLE", CRecordset::readOnly);

    // Loop through each record
    while( !recset.IsEOF() )
    {
        // Copy each column into a variable
        recset.GetFieldValue("NAME", sField);

        // Add the obtained field to a drop-down box
        m_dropDown.AddString(sField);

        // goto next record
        recset.MoveNext();
    }
    // Close the database
    database.Close();
}
CATCH(CDBException, e)
{
    // If a database exception occured, show error msg
    AfxMessageBox("Database error: "+e->m_strError);
}
END_CATCH;

我的问题是,抛出有时的例外情况。消息框显示

Database error: Record too large

我的数据库有> 30000条记录。

为什么会发生此异常?另外,为什么会出现有时

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以自己搜索答案,但无论如何引用MSDN support -

  

在Microsoft Access数据库中的表中记录   仅限于2K以下,不包括备注字段。该   当您输入数据时,“记录太大”错误   记录,而不是在定义表结构时。

您可以尝试使用备忘录类型,因为answer建议。