我现在做一个登陆界面,想用COMBOX 来做输入和记录用户名,怎么样才能关联到我的ACCESS数据库啊?如果用户登陆成功了就记录在下拉列表中,类似于 QQ登陆是的效果。。大侠们怎么做啊, 没用过,请大侠们指点一下,最后能给个简单的实例代码,谢谢!

解决方案 »

  1.   

    选择控件属性 样式 选择下移 添加CBN_EDITCHANGE事件, 在响应函数中 写连接数据库的代码就行了 别说你不会连接ACCESS数据库。
      

  2.   

    部长,COMBOX怎么关联到数据库啊?  
    就是如果用户名密码正确的话,我就记录这个用户名,下次打开的时候,就直接在下拉选项里,不要手动输入,
    这个很常见的,是怎么弄的?
      

  3.   

    如果是我整的话 我就把数据存到一个INI中 读写都比较简单 
    这个有源代码 是ADO操作 ACCESS的 你看看吧http://www.vckbase.com/document/viewdoc/?id=496
      

  4.   


    这个我知道,我是问,怎么把成功登陆的用户名保存到了COMBOX的下拉列表中,比如:第一次张山登陆成功了,
    下次李四打开的时候,就可以看到列表里有张山,同时李四可以自己写名字进去,如果成功了,那下次启动的时候,列表里就有张山和李四可以选。这个怎么弄啊?
      

  5.   

    其实楼主你说的这个需求很简单首先确定一个问题 如何知道成功登陆了成功登陆后将其用户名记录在INI里面打开软件自动搜索INI显示到前台就好了
      

  6.   

    #9楼正解
    不过也不一定要存.INI文件,可以存xml文件,如果用户要分类的话,xml比较好
      

  7.   


    嗯,就是这个意思,我现在是存到INI里,
    WritePrivateProfileString(_T("UserList"),_T("UserName"),str,_T("user.ini")); 发现每次都只存一个, 怎么写这个保存语句,我这样做,它只会存到同一个键值里面, 如果我想单纯的存这个名字在INI里面,不需要什么段名,键名
    就像这样的: 
    张山
    李四
    王五  
      怎么弄啊?
      

  8.   

    没人指点下吗? 
    怎么保存用户名,放到COMBOX列表里啊? 怎么写这个存储语句啊?   还有COMBOX的宽度怎么改变啊,默认的很窄啊。
      

  9.   

    先存到数据库中,再从数据库读取/////////存到表
    m_pRecordset->PutCollect("用户名",(_variant_t)m_User);
    m_pRecordset->PutCollect("密码",(_variant_t)m_Password);//////////////读取
    BOOL CLoginDlg::OnInitDialog() 
    {
             int i,recordcount;
    CString sql="SELECT Username FROM Login ";
    try
    {
    m_pRecordset.CreateInstance("ADODB.Recordset");
    m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnectSQLOnLine,true),adOpenStatic,adLockOptimistic,adCmdText);
    recordcount=m_pRecordset->GetRecordCount();//m_pConnectSQL打开数据库自己去写
    if(!m_pRecordset->adoEOF)
    {
    for(i=0;i<recordcount;i++)
    {
    m_combUser.AddString((LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("Username"));
    m_pRecordset->MoveNext();
    }
    } m_pRecordset->Close();
    }
    catch(_com_error e)///捕捉异常
    {
    CString temp;
    temp.Format("读取用户名错误:%s",e.ErrorMessage());
    AfxMessageBox(temp);
    return false;
    }
    }
    ////////判断输入用户名跟密码是否正确
    void CLoginDlg::OnOK() 
    {
             UpdateData();
    if(m_User.IsEmpty()||m_Password.IsEmpty())
    {
    AfxMessageBox("请输入用户名和密码!");
    return;
    }
    else
    {
    //成生sql语句
    CString sql="SELECT * FROM Login where Username='"+m_User+"' and Password='"+m_Password+"'";
    try
    {
    //查询数据库,看是否有此用户和密码
    m_pRecordset.CreateInstance("ADODB.Recordset");
    m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnectSQLOnLine,true),adOpenStatic,adLockOptimistic,adCmdText);
    //如果没有此用户和密码,再查询是否有此用户
    if(m_pRecordset->adoEOF)
    {
    AfxMessageBox("用户名或密码错误!");
    return ;
    }
    //用户名和密码存在,登录成功
    else
    {
    theApp.struser=m_User;
    theApp.strpassword=m_Password;
    }
    m_pRecordset->Close();
    }
    catch(_com_error e)///捕捉异常
    {
    CString temp;
    temp.Format("读取用户名和密码错误:%s",e.ErrorMessage());
    AfxMessageBox(temp);
    return;
    }
    }
            CDialog::OnOK();
    }以上大概思路,根据需要自己去改改