2013-03-11 55 views
0

我有一些代码从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

您可以通过自己的答案寻找,但无论如何报价MSDN support - 在一个表中

纪录......在Microsoft Access数据库 仅限于轻微2K下,不计算备注字段。 当您将数据输入到这样一个 记录中时,而不是在定义表结构时发生“记录太大”错误。

而且您可以尝试使用备忘录类型,因为answer暗示。

+0

我试过了很长一段时间。我从来没有看过那篇文章o_O无论如何,谢谢! – 2013-03-11 14:23:31

+0

此外,使用备忘录类型不是我的选择,因为我没有(也不能)创建数据库。不管怎么说,还是要谢谢你!哦,为什么有时候会发生这种异常? – 2013-03-11 15:21:22