2012-03-22 2 views
1

こんにちは、データベースとその動作を読み込むコードを書きました。しかし、私はAddNew()を使ってデータベースに書き込もうとします。デバッグアサーションエラーが発生します。ここで私はあなたがスナップショットモードでデータベースを開いているODBCを使用してMFCで作成されたダイアログベースのアプリケーションでデータベースに書き込む

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; 
} 
+0

我々が使用しているデータベースはMSアセス – user1285170

+0

であり、我々はそれがこれを与えdyanset使用するときに我々はそれがこのエラー – user1285170

答えて

0

をしようとしているコードがある - それは読み取り専用です。

recset.Open(CRecordset::dynaset...) 
+0

で書かれている:あなたは、ダイナセットとしてそれを開く必要があります例外 "ODBCドライバはダイナセットをサポートしていません" – user1285170

+0

を与えるdyanset使用する場合のコードは、Visual Studio 2008の – user1285170

+0

MSDNヘルプは、スナップショットも更新可能であると言います。しかし、Snapshotで開こうとすると、SQLフェッチ前に列がバインドされていないという例外があります。 any1はそれを助けることができますか? – user1285170

関連する問題