代码如下
_ConnectionPtr conn;
_CommandPtr cmd;
_RecordsetPtr recordset;
_ParameterPtr img_id; conn.CreateInstance("ADODB.Connection");
cmd.CreateInstance("ADODB.Command");
img_id.CreateInstance("ADODB.Parameter");
recordset.CreateInstance("ADODB.Recordset"); try
{
conn->Open ( "DSN=dell;", "","",adModeUnknown);
cout << "Success" << endl;
cmd->ActiveConnection = conn;
cmd->CommandText = "getImageInformation";
cmd->CommandType = adCmdStoredProc; img_id = cmd->CreateParameter("img_id",adInteger,adParamInput,-1, (_variant_t)"1");
cmd->Parameters->Append(img_id); recordset->CursorLocation = adUseClient; recordset = cmd->Execute(NULL,NULL,adCmdStoredProc); //这里的i是-1,怎么解决 ?
int i = recordset->RecordCount; FieldsPtr fileds = recordset->Fields; FieldPtr imgName = fileds->GetItem("Image_Name");
_ConnectionPtr conn;
_CommandPtr cmd;
_RecordsetPtr recordset;
_ParameterPtr img_id; conn.CreateInstance("ADODB.Connection");
cmd.CreateInstance("ADODB.Command");
img_id.CreateInstance("ADODB.Parameter");
recordset.CreateInstance("ADODB.Recordset"); try
{
conn->Open ( "DSN=dell;", "","",adModeUnknown);
cout << "Success" << endl;
cmd->ActiveConnection = conn;
cmd->CommandText = "getImageInformation";
cmd->CommandType = adCmdStoredProc; img_id = cmd->CreateParameter("img_id",adInteger,adParamInput,-1, (_variant_t)"1");
cmd->Parameters->Append(img_id); recordset->CursorLocation = adUseClient; recordset = cmd->Execute(NULL,NULL,adCmdStoredProc); //这里的i是-1,怎么解决 ?
int i = recordset->RecordCount; FieldsPtr fileds = recordset->Fields; FieldPtr imgName = fileds->GetItem("Image_Name");
try{
_bstr_t perm,emp_name,emp_password;
char *p;
_ConnectionPtr pConnection;
_RecordsetPtr pr;
_CommandPtr c;
emp_name = "小宝";
emp_password = "暗暗"; ::CoInitialize(NULL);
_bstr_t cnn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=zhangli;Initial Catalog=POWINSP;Data Source=OCEAN-ZHANGLI"; pConnection.CreateInstance("ADODB.Connection");
pConnection->Open(cnn,"","",adConnectUnspecified);
pr.CreateInstance("ADODB.Recordset");
c.CreateInstance("ADODB.Command"); pr->CursorType = adOpenDynamic; c->CommandText = "SELECT * FROM TBL_EMPLOYEE WHERE EMP_NAME <> ? AND PASSWORD <> ?"; c->Parameters->Append(c->CreateParameter("name",adBSTR,adParamInput,10,emp_name)); c->Parameters->Append(c->CreateParameter("password",adBSTR,adParamInput,10,emp_password));
c->ActiveConnection = pConnection.GetInterfacePtr(); pr = c->Execute(NULL,NULL,adCmdText); while(!pr->adoEOF)
//if(pr->GetRecordCount() > 0)//这里就是总是得到-1
{
int i = pr->RecordCount;
perm = SysAllocString((_bstr_t)pr->GetCollect("emp_name"));
p = _com_util::ConvertBSTRToString(perm);
pr->MoveNext();
}
}
catch(_com_error e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
MessageBox((LPCSTR) (bstrSource+bstrDescription),"COM系统调用错误",MB_ICONINFORMATION);
}
我昨天刚刚在CSDN上发了帖子,问这个问题,handsomerun(毛毛)老兄已经帮我解答了。http://community.csdn.net/Expert/topic/4619/4619835.xml?temp=.6759912
谢谢handsomerun(毛毛)!
Rec.MoveLast() ; //指针移到末记录
Rec.MoveFirst() ; //移回首位置,保持与打开时同步
int intCount=Rec.RecordCount(); //真正的记录总数就出来了。
_variant_t var;
m_pSet = m_pConn->Execute(strSQL.AllocSysString(),&var,adOptionUnspecified);
long nRecords = var.lVal;
这nRecords就保存着记录数