_bstr_t source("Driver=                          {SQLServer};Server=JACKIE;Uid=sa;Pwd=jackie1127;Database=membership");
 _bstr_t user("admin");
 _bstr_t pwd(""); HRESULT hr;
try{
hr = m_connection.CreateInstance(_uuidof(Connection));
if(SUCCEEDED(hr))
hr = m_connection->Open(source, user, pwd, 16);我是一名初级选手,这是一个书上的程序,我现在想实现它,我的数据库名字是 membership SQLserver的配置用的是使用Windows 登录方式,后台数据库是SQLserver 2000,请问上面几句话中应该怎么做相应地修改? 另外,在VC 中ADO的各个类中函数的使用方法在MSDN 中查不到啊?怎么回事?下面这句程序是什么意思,包括各个参数
hr = m_connection->Open(source, user, pwd, 16);

解决方案 »

  1.   

    HRESULT Connection15::Open ( _bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options )
    ConnectionString为连接字串,UserID是用户名, Password是登陆密码,Options是连接选项,用于指定Connection对象对数据的更新许可权,
    Options可以是如下几个常量:
    adModeUnknown:缺省。当前的许可权未设置
    adModeRead:只读
    adModeWrite:只写
    adModeReadWrite:可以读写
    adModeShareDenyRead:阻止其它Connection对象以读权限打开连接
    adModeShareDenyWrite:阻止其它Connection对象以写权限打开连接
    adModeShareExclusive:阻止其它Connection对象以读写权限打开连接
    adModeShareDenyNone:阻止其它Connection对象以任何权限打开连接我们给出一些常用的连接方式供大家参考:
    (1)通过JET数据库引擎对ACCESS2000数据库的连接m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\test.mdb","","",adModeUnknown);(2)通过DSN数据源对任何支持ODBC的数据库进行连接:m_pConnection->Open("Data Source=adotest;UID=sa;PWD=;","","",adModeUnknown);(3)不通过DSN对SQL SERVER数据库进行连接: 
    m_pConnection->Open("driver={SQL Server};Server=127.0.0.1;DATABASE=vckbase;UID=sa;PWD=139","","",adModeUnknown);其中Server是SQL服务器的名称,DATABASE是库的名称Connection对象除Open方法外还有许多方法,我们先介绍Connection对象中两个有用的属性ConnectionTimeOut与State
    ConnectionTimeOut用来设置连接的超时时间,需要在Open之前调用,例如: 
    m_pConnection->ConnectionTimeout = 5;///设置超时时间为5秒
    m_pConnection->Open("Data Source=adotest;","","",adModeUnknown);
      

  2.   

    若你在安装sql server 2000 时用的是默认实例,用这个就可以了Provider=SQLOLEDB; Server = localhost;database=membership;然后把用户名和密码改一下。若不是默认实例,server写成你本机的ip地址,其他的方法我没试过。
      

  3.   

    (3)不通过DSN对SQL SERVER数据库进行连接: 
    m_pConnection->Open("driver={SQL Server};Server=127.0.0.1;DATABASE=vckbase;UID=sa;PWD=139","","",adModeUnknown);
    根本就不行?