一:卸载之后重新安装,系统检测会通不过,提示"性能监视器计数器"错误,而不能重新安装。解决方法:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib]
"Last Counter"=dword:00000ed4 (5277)
"Last Help"=dword:00000ed5 (5278)
“Last Counter”值必须与以下注册表项中“Perflib\004”的“Counter”项的最大值(最后一项的值)匹配,并且上一步的“Last Help”值必须与以下注册表项中“Perflib\004”的“Help”项的最大值匹配。
也就是说,把Last Counter 和counter,Last Help和help改成一样大的就可以了。
二:使用ado连接数据库。
1:确保能用工具连接上数据库的前提下继续看2。
2:事例代码,其中前几个函数是自定义的,关键代码在connection->open附近。
#include"stdio.h"
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
#define RsITEM(rs,x) rs->Fields->Item[_variant_t(x)]->Value
#define UC (char *)
int ReadIntCol(_RecordsetPtr pRst,char * colName)
{
char* buff=new char[256];
sprintf(buff,"%s",UC _bstr_t(RsITEM(pRst,colName)));
int result= atoi(buff);
delete buff;
return result;
}
double ReadFloatCol(_RecordsetPtr pRst,char * colName)
{
char* buff=new char[256];
sprintf(buff,"%s",UC _bstr_t(RsITEM(pRst,colName)));
double result= atof(buff);
delete buff;
return result;
}
void ReadStringCol(_RecordsetPtr pRst,char * colName, char * result)
{
sprintf(result,"%s",UC _bstr_t(RsITEM(pRst,colName)));
}
int main()
{
double a[3][3];
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
a[i][j]=0;
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
pConn->ConnectionString = L"Driver={SQL Server};Server={10.60.56.229,1433};"
L"Trusted_Connection=no;"
L"Database=test;Uid=wkp;Pwd=wkp;";
pConn->Open("","","",-1);
HRESULT hTRes;
hTRes = pRst.CreateInstance("ADODB.Recordset");
if (SUCCEEDED(hTRes))
{
//repeat begin
pRst->Open("select * from distance",(_variant_t)((IDispatch *)pConn), adOpenDynamic,adLockPessimistic,adCmdText);
while(!pRst->rsEOF)
{
int begin=ReadIntCol(pRst,"begin");
int end=ReadIntCol(pRst,"end");
double value=ReadFloatCol(pRst,"value");
a[begin][end]=value;
/*char * pUsername=new char[256];
ReadStringCol(pRst,"username",pUsername);*/
/*printf("id= %d username= %s password= %s \n", id,pUsername,pPassword);
delete pUsername;
delete pPassword;*/
pRst->MoveNext();
}
pRst->Close();
//repeat end
}
//below to insert value to db
/* int nnnn=17;
char res[512];
sprintf(res,"insert into lidan values(%d)",nnnn);
pConn->Execute(res, NULL, adCmdText);*/
pConn->Close();
pRst.Release();
pConn.Release();
CoUninitialize();
return 0;
}
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
#define RsITEM(rs,x) rs->Fields->Item[_variant_t(x)]->Value
#define UC (char *)
int ReadIntCol(_RecordsetPtr pRst,char * colName)
{
char* buff=new char[256];
sprintf(buff,"%s",UC _bstr_t(RsITEM(pRst,colName)));
int result= atoi(buff);
delete buff;
return result;
}
double ReadFloatCol(_RecordsetPtr pRst,char * colName)
{
char* buff=new char[256];
sprintf(buff,"%s",UC _bstr_t(RsITEM(pRst,colName)));
double result= atof(buff);
delete buff;
return result;
}
void ReadStringCol(_RecordsetPtr pRst,char * colName, char * result)
{
sprintf(result,"%s",UC _bstr_t(RsITEM(pRst,colName)));
}
int main()
{
double a[3][3];
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
a[i][j]=0;
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
pConn->ConnectionString = L"Driver={SQL Server};Server={10.60.56.229,1433};"
L"Trusted_Connection=no;"
L"Database=test;Uid=wkp;Pwd=wkp;";
pConn->Open("","","",-1);
HRESULT hTRes;
hTRes = pRst.CreateInstance("ADODB.Recordset");
if (SUCCEEDED(hTRes))
{
//repeat begin
pRst->Open("select * from distance",(_variant_t)((IDispatch *)pConn), adOpenDynamic,adLockPessimistic,adCmdText);
while(!pRst->rsEOF)
{
int begin=ReadIntCol(pRst,"begin");
int end=ReadIntCol(pRst,"end");
double value=ReadFloatCol(pRst,"value");
a[begin][end]=value;
/*char * pUsername=new char[256];
ReadStringCol(pRst,"username",pUsername);*/
/*printf("id= %d username= %s password= %s \n", id,pUsername,pPassword);
delete pUsername;
delete pPassword;*/
pRst->MoveNext();
}
pRst->Close();
//repeat end
}
//below to insert value to db
/* int nnnn=17;
char res[512];
sprintf(res,"insert into lidan values(%d)",nnnn);
pConn->Execute(res, NULL, adCmdText);*/
pConn->Close();
pRst.Release();
pConn.Release();
CoUninitialize();
return 0;
}