2013-03-12 38 views
0

我直接使用CDatabaseCRecordset(沒有派生自這個類)。一個SELECT聲明例如樣子:INSERT不派生自CDatabase或CRecordset

CDatabase db; 
db.OpenEx(_T("DSN=mydatabase")); 
CRecordset rs(&db); 
rs.Open(CRecordset::forwardOnly, _T("SELECT id, name FROM user")); 
while (!rs.IsEOF()) { 
    CString name; // Just for demonstration 
    rs.GetFieldValue(1, name); 
} 

是什麼力量讓這種方法的INSERTUPDATE說法正確的方法是什麼?

  • 沒有CRecordset::SetFieldValue
  • 我可以構建整個SQL字符串(包括值)和執行CDatabase::ExecuteSQL但我不喜歡這種解決方案,喜歡的PARAMATERS綁定以某種方式。
+0

最後,用綁定字段派生的CRecordset只是建立一個SQL字符串並執行它!這就是數據庫的工作方式,爲什麼不使用它? – dwo 2013-03-13 11:55:19

+0

@dwo:我的意圖是自己編寫代碼的每一行,並在沒有_MFC應用程序嚮導_及其自動生成的代碼的幫助下完成。 – 2013-03-13 13:00:24

+0

@dwo:我試着[添加一個MFC ODBC使用者](http://msdn.microsoft.com/en-us/library/d83f7hdk(v = vs.100).aspx),但我得到錯誤「MFC類只能添加到MFC項目」。我正在構建一個靜態庫(文件 - >新建 - >項目 - > Win32控制檯 - >靜態庫),這似乎是此錯誤的原因。 – 2013-03-13 13:16:31

回答

1

我認爲this article筆者已經實現你想要什麼

+0

看起來很有希望,遺憾的是沒有例子如何插入一條記錄。 – 2013-03-13 07:37:16