vc++ 写入数据库
我用VC++ OLEDB方式写入数据库 不知道为什么每次写入的时候都只能写入一行 写第二行就插入失败了,数据时从LISTCTRL控件中读取的,数据正常,可每次只能莫名的写入一行数据,请教大家下到底是什么地方出错了 不胜感激 主要代码如入
for(int iRow= 0;iRow != iCount;iRow++){
DWORD dwInfoSize;
CString lpwszInfo;
memset(pData, 0, dwOffset);
for (dwCol = 0; dwCol < dwBindingSize; ++dwCol){
if(dwCol == 0)
lpwszInfo = strOrderID;
else if(dwCol == 1)
lpwszInfo = m_TableNo;
else if(dwCol == 2)
lpwszInfo = m_ListCtrl.GetItemText(iRow,0);
else if(dwCol == 3)
lpwszInfo = m_ListCtrl.GetItemText(iRow,3);
switch(prgBinding[dwCol].wType){
case DBTYPE_WSTR://字符串
dwInfoSize = prgBinding[dwCol].cbMaxLen/sizeof(WCHAR) - 1;
wcscpy((WCHAR*)(pData+prgBinding[dwCol].obValue), lpwszInfo);
*(ULONG*)(pData+prgBinding[dwCol].obLength)= wcslen((WCHAR*) (pData+prgBinding[dwCol].obValue))*sizeof(WCHAR);
*(DBSTATUS*)(pData+prgBinding[dwCol].obStatus = DBSTATUS_S_OK
break
default:
break;
}
}
hr = IRowsetChange>InsertRowDB_NULL_HCHAPTER,hAccessor,pData, prghRows);
if (FAILED(hr)){
AfxMessageBox(_T("InsertRow Fail!"));
goto Abort;
}
// Get the row data
hr = pIRowset->GetData(rghRows[0], hAccessor, pData);
if(FAILED(hr)){
AfxMessageBox(_T("GetData Fail!"));
goto Abort;
}
// Release the rowset
hr = pIRowset->ReleaseRows(1, prghRows, NULL, NULL, NULL);
if(FAILED(hr)){
goto Abort;
}
prghRows[0] = DB_NULL_HROW;
}
// Commit the transaction
if (pITxnLocal){
pITxnLocal->Commit(FALSE, XACTTC_SYNC, 0);
}