Запись в базу данных в диалоговом приложении, созданном в MFC с использованием ODBC - PullRequest
1 голос
/ 22 марта 2012

Привет, я написал код для чтения из базы данных, и он работает. но когда это я пытаюсь записать в базу данных, используя AddNew (). но это дает ошибку подтверждения отладки. вот код, который я пытаюсь

void CReadDBDlg::OnRead() 
{
// TODO: Add your control notification handler code here
CDatabase database;
CString SqlString;
CString sCatID, sCategory;
CString sDriver = "MICROSOFT ACCESS DRIVER (*.mdb)";
CString sDsn;
CString sFile = "d:\\Test.mdb";
// You must change above path if it's different
int iRec = 0;   

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

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

    // Build the SQL statement
    SqlString =  "SELECT CatID, Category "
            "FROM Categories";

    // Execute the query
    recset.Open(CRecordset::snapshot,SqlString,CRecordset::appendOnly);

    // Loop through each record

        // Copy each column into a variable
        recset.GetFieldValue("CatID",sCatID);
        recset.GetFieldValue("Category",sCategory);

        // goto next record
        recset.MoveLast();
        recset.GetFieldValue("CatID",sCatID);
        //recset.AddNew();

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

1 Ответ

0 голосов
/ 22 марта 2012

Вы открываете базу данных в режиме моментального снимка - это только для чтения.Вам нужно открыть его как набор:

recset.Open(CRecordset::dynaset...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...