回 帖 发 新 帖 刷新版面

主题:请教一个VC查询数据库的问题

我要用VC查询ACCESS数据库中的3个字段:数据表名,字段名,内部代码;
      该怎么写这个程序呢,包括查询之后的显示工作.

谢谢!!!
[em1]

回复列表 (共5个回复)

沙发

http://www.programfan.com/blog/article.asp?id=15520
先看看这个

板凳

谢谢,看过了,不是太实用...
关键是我写的查询语句不能用..

3 楼

你用的是什么连接方法,odbc,ado,ole,dao……
把代码贴出来看看?

4 楼

ODBC连接,代码如下:
CString strSql;
    if(m_dbname != "" )
        strSql.Format("SELECT * FROM 数据词典表 WHERE 数据表名 = '%s'",
        m_dbname);
    else if(m_field != "" )
        strSql.Format("SELECT * FROM 数据词典表 WHERE 字段名 = '%s'",m_field);
    else if(m_code != "" )
        strSql.Format("SELECT * FROM 数据词典表 WHERE 内部代码 = '%s'",m_code);
        else
        strSql = "SELECT * FROM 数据词典表";
    try
    {
        //先关闭已经打开的记录集对象
        m_pRecordset->Close();

        //根据新的Sql查询语句,重新打开记录集对象
        m_pRecordset->Open(strSql.AllocSysString(),                
        (IDispatch*)m_pConnection,
        adOpenDynamic,
        adLockOptimistic,
        adCmdText);
    }
    catch(_com_error *e)
    {
        AfxMessageBox(e->ErrorMessage());
    }
    
    //将查询后得到的新记录集显示出来
        _variant_t var;
    CString strDbname,strField,strCode;
    strDbname=strField=strCode="";

            while(!m_pRecordset->adoEOF)
        {
            var = m_pRecordset->GetCollect("数据表名");
            if(var.vt != VT_NULL)
                strDbname = (LPCSTR)_bstr_t(var);
            var = m_pRecordset->GetCollect("字段名");
            if(var.vt != VT_NULL)
                strField = (LPCSTR)_bstr_t(var); 
            var = m_pRecordset->GetCollect("内部代码");
            if(var.vt != VT_NULL)
                strCode = (LPCSTR)_bstr_t(var);
            m_sjcdlist.AddString(strDbname+strField+strCode);

            m_pRecordset->MoveNext();
        }
写的很没有条理,麻烦大家多提意见.
谢谢!!!

5 楼

it's easier to use dao.

我来回复

您尚未登录,请登录后再回复。点此登录或注册