目前剛接觸這些東西
描述:兩臺服務器,一臺是SQL,一臺是DB2,把SQL中的一個表的資料匯入DB2中已經建好的一張表中。我建了兩個資料庫類,一個是CSQL,一個是CDB2。
CDB2類代碼:
void CDB2::OnInitDB2Conn()
{
::CoInitialize(NULL);
m_pConnection.CreateInstance(__uuidof(Connection));
_bstr_t strConn = "Provider=IBMDADB2.DB2COPY1;Persist Security Info=False;User ID=db2admin;Data Source=BSMPWS1;Location="";Extended Properties=""";
m_pConnection->Open(strConn,"db2admin","db2admin",adModeUnknown);
}
_RecordsetPtr & CDB2::GetRecordSet(_bstr_t strSQL)
{
if(m_pConnection == NULL)
OnInitDB2Conn();
m_pRecordset.CreateInstance(__uuidof(Recordset)); //初始化Recordset指標
m_pRecordset->Open(strSQL,m_pConnection.GetInterfacePtr(), adOpenDynamic,adLockOptimistic,adCmdText);
return m_pRecordset;
}
BOOL CDB2::ExecuteSQL(_bstr_t strSQL)
{
_variant_t RecordsAffected;
if(m_pConnection==NULL)
OnInitDB2Conn();
m_pConnection->Execute(strSQL,NULL,adCmdText);
return true;
}
CSQL類同上
Dlg類中導資料部分:
void CDatabaseDlg::OnBtnCopy()
{
CSQL sqlCopy;
sqlCopy.OnInitSQLConn();
CDB2 db2Copy;
db2Copy.OnInitDB2Conn();
_bstr_t DB2_delete = "delete * from bs_info_gather"; //清空DB2資料庫表中的資料
db2Copy.ExecuteSQL(DB2_delete);
_bstr_t SQL_AGENCY = "select * from bs_agency";
_RecordsetPtr agency_pRecordset;
agency_pRecordset = sqlCopy.GetRecordSet(SQL_AGENCY); //打開并獲取SQL的bs_agency記錄集
_bstr_t DB2_AGENCY = "select * from bs_info_gather";
_RecordsetPtr db2_pRecordset;
db2_pRecordset = db2Copy.GetRecordSet(DB2_AGENCY); //打開并獲取DB2資料集
try
{
while(agency_pRecordset->adoEOF==0)
{
db2_pRecordset->AddNew(); ##############################1
//將SQL中AGENCY_TITLE欄位資料傳到DB2中BS_TITLE里
_bstr_t an1 = agency_pRecordset->GetCollect("AGENCY_TITLE");
db2_pRecordset->PutCollect("BS_TITLE",an1);
_bstr_t an2 = agency_pRecordset->GetCollect("AGENCY_CONTENT");
db2_pRecordset->PutCollect("BS_CONTENT",an2);
... ...
db2_pRecordset->MoveNext();
}
db2_pRecordset->Update();
}
.....
}
除錯時在########1處拋出“當前記錄集不支持更新。這可能是提供程式的限制,也可能是選定鎖定型別的限制。”麻煩幫我分析分析哪里出問題了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/130043.html
標籤:數據庫及相關技術
上一篇:如何獲得設備的完整名稱?
下一篇:Edit顯示資料
