如題,我連接上oracle資料庫了,然后使用m_pRecordset->AddNew(); 新建一條記錄進行插入成功,使用(theApp.m_pConnection)->Execute((_bstr_t)StrSQL3, NULL, adCmdText);卻一直沒有成功,其間沒有報錯,正常結束程式,但是資料庫記錄值沒有增加。

下面是代碼:
首先在程式框架類里連接oracle服務器
try//連接資料庫
{
m_pConnection.CreateInstance(__uuidof(Connection));
_bstr_t strConnect="Provider=OraOLEDB.Oracle.1;User ID='system';Password='tiger';Data Source=orcl;Persist Security Info=False;";
m_pConnection->Open(strConnect,"system","tiger",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(TEXT("資料庫連接出錯!"));
AfxMessageBox(e.Description());
exit(-1);
}
下面是插入資料庫的代碼,也就是有問題的代碼段
m_pRecordset.CreateInstance("ADODB.Recordset");//創建Recordset實體
CString strSQL="select * from VISIBILITY"; //連接VISIBILITY表
try
{
m_pRecordset->Open((_variant_t)strSQL,(IDispatch*)theApp.m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
} //m_pConnection我在上一組代碼中已經連接上oracle服務器了
catch (_com_error* e)
{
AfxMessageBox(e->ErrorMessage());
}
CString StrSQL3;
CString Time="2018/12/20 19:00";
CString visib="1.3";
StrSQL3.Format("INSERT INTO VISIBILITY(采樣時間,能見度) VALUES(#%s#,'%s')","2018/12/20 18:00","3.0");
//我自己寫死了一個記錄準備插入
try{
m_pRecordset->AddNew(); //新建一條記錄
m_pRecordset->PutCollect("采樣時間",_variant_t(Time)); //修改每個欄位值
m_pRecordset->PutCollect("能見度",_variant_t(visib)); //方法一。用AddNew然后加Update,可以成功插入記錄
//(theApp.m_pConnection)->Execute((_bstr_t)StrSQL3, NULL, adCmdText); //方法二。直接用Execute插入,無BUG,卻沒有在資料庫中增加資料
}
catch(_com_error e)
{
MessageBox(e.Description());
return;
}
m_pRecordset->Update(); //更新至資料庫
下圖是方法一的增加記錄的效果。

洗掉新增記錄,然后注釋方法一,取消注釋方法二,也就是使用Execute插入資料,無效果。
我仔細看了我的StrSQL3中,SQL陳述句沒有問題,請問前輩們這個是什么問題。編譯環境VS2008,mfc框架,x64平臺
uj5u.com熱心網友回復:
要不要給你移動到 VC 區?uj5u.com熱心網友回復:
捂臉。。。難道這個不是oracle插入陳述句Execute這種的問題嗎?
uj5u.com熱心網友回復:
你的代碼中除了INSERT INTO VISIBILITY(采樣時間,能見度) VALUES(#%s#,'%s')這句,其它都不是PL/SQL,沒法幫啊uj5u.com熱心網友回復:
好吧,謝謝幫忙。剛入門的菜鳥確實傻傻分不清楚,我自己移動換區了,再次謝謝各位。
uj5u.com熱心網友回復:
樓主你好,我最近在做一個在VC6中mfc 通過ado連接Oracle的作業。一直卡在連接資料庫的階段,代碼以及連接字串試過各種格式,現懷疑是系統環境原因,樓主能不能介紹下自己工程的配置環境?轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/38784.html
標籤:數據庫
