SQL server 2005 不能重新安装解决及ADO连接事例代码

一:卸载之后重新安装,系统检测会通不过,提示"性能监视器计数器"错误,而不能重新安装。解决方法:
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 ;
 }



转载于:https://www.cnblogs.com/Aimd/archive/2007/08/23/866997.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值