下边是我的一个ISAPI程序,老是出错,那个高手能解决我就真的服了你了@@!!注:数据库中两个字段,id,username if (!AfxOleInit())
{
*pCtxt << _T("OLE initialization failed."); }
else
{
_RecordsetPtr m_pRs;
CString m_strConnection;
CString m_strCmdText; m_strConnection = _T("Provider=SQLOLEDB.1;Password=322322;Persist Security Info=True;User ID=sa;Initial Catalog=test_user;Data Source=192.168.1.11");
m_strCmdText = _T("my_user");
try
{ m_pRs.CreateInstance(__uuidof(Recordset));
m_pRs->CursorLocation = adUseClient;
m_pRs->Open((LPCTSTR)m_strCmdText,
(LPCTSTR)m_strConnection, adOpenStatic,
adLockOptimistic, adCmdTableDirect); long index[1];
VARIANT flds,vals; //声明两个安全数组变量
flds.vt=VT_ARRAY|VT_VARIANT; //定义安全数组类型
vals.vt=VT_ARRAY|VT_VARIANT;
SAFEARRAYBOUND bound; //声明安全数组边界变量
bound.cElements=2; //定义安全数组元素个数
bound.lLbound=0; //定义安全数组最小下标
COleVariant fld[1],val[1]; //用于保存字段名称和字段值

// UpdateData(true);//将对话框数据传送给对应的变量
//设置字段名称数组元素值
fld[0]="username";
fld[1]="id";
//设置字段值数组元素值
val[0]=pstrname;
val[1]="111";
//创建安全数组
flds.parray=::SafeArrayCreate(VT_VARIANT,1,&bound);
vals.parray=::SafeArrayCreate(VT_VARIANT,1,&bound);
for(int i=0;i<2;i++){
index[0]=i;
::SafeArrayPutElement(flds.parray,index,&fld[i]); //将字段名称存入安全数组
::SafeArrayPutElement(vals.parray,index,&val[i]); //将字段值称存入安全数组
}
m_pRs->AddNew(&flds,&vals);//使用安全数组添加新记录
*pCtxt <<_T("成功添加记录!");
}
catch (_com_error &e)
{
*pCtxt <<e.Description(); }