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 ;
}