各位大哥,我在用OLE DB进行数据库插入操作时产生不能插入的情况,给出的提示信息是:不知到出错原因。下面是我的源码:
BOOL COLEDB_MFCView::InsertRecord(CString strTableName, CStringArray &saValue)
{
        //savalue 为要插入的字符数组;
         if(0==saValue.GetSize()) return FALSE;
if(strTableName.IsEmpty())   return FALSE;
USES_CONVERSION;
//建立存取器类,处理列和命令;
CCommand<CManualAccessor>rs; //TCHAR (*lpszColumns)[50]=NULL;
char (*lpszColumns)[50]=NULL;
CString m_strQuery;
m_strQuery.Format("select * from %s", strTableName);
ULONG ulFields=1+saValue.GetSize(); // set column number;
//ulFields=13;
    //AfxMessageBox(m_strQuery);
TRY
{
lpszColumns = new TCHAR[ulFields][50];
        // 为新建的存取器帮定列
rs.CreateAccessor(ulFields, &lpszColumns[0], sizeof(char)*50*ulFields);
for (ULONG l=0; l<ulFields; l++){
rs.AddBindEntry(l+1,  DBTYPE_STR, 50, &lpszColumns[l]);
            } // Create a rowset containing data.
// Set up some properties for the rowset
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IRowsetChange, true);
propset.AddProperty(DBPROP_UPDATABILITY,DBPROPVAL_UP_INSERT | DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_DELETE); rs.Create(m_Session, m_strQuery);
rs.Prepare();
        //AfxMessageBox("nishidashabu"); 
        //下面语句执行没有问题;
if (rs.Open(&propset)!=S_OK){
AfxThrowOLEDBException(rs.m_spRowset, IID_IRowset);
}
/// 向绑定区拷贝数据
for(ULONG i=1;i<ulFields;i++){
_tcsncpy(lpszColumns[i], saValue.GetAt(i-1), 50);
AfxMessageBox(lpszColumns[i]);    
} //####################################################################################
//该语句运行时有问题;
if(rs.Insert(0)!=S_OK){
AfxMessageBox("failed to insert ");
AfxThrowOLEDBException(rs.m_spRowset, IID_IRowsetChange);
}
    //####################################################################################
// 清除存取区数据;

if (lpszColumns != NULL)
{
delete [ulFields]lpszColumns;
//AfxMessageBox("successful");
lpszColumns = NULL;
}
}
CATCH(COLEDBException, e){
if (lpszColumns != NULL)
delete [ulFields]lpszColumns;
e->ReportError();
return FALSE; }
END_CATCH return TRUE;
}