使用的是VC
数据库为Access,连接方式DAO和ADO都行。
现在有一个数据表
三个个字段:
点号    经度       纬度
1     23.344   23.33
2    123.34   34.23
3    112.22   43.23
4    21.343   23.343
要把他们分别读入数组:int a[100],double L[100],double B[100];用来计算!
请教各位朋友出谋划策!
小弟感激不尽! 

解决方案 »

  1.   

    这里有ado例子
      

  2.   

    #import "msado15.dll" no_namespace rename ("EOF", "adoEOF")
     _ConnectionPtr m_pConnection;    //连接 
    _RecordsetPtr m_pRecordset;      //结果集
     _CommandPtr m_pCommand;          //命令对象//初始化结果集
    this->m_pRecordset.CreateInstance(__uuidof(Recordset));
    //查找数据
    try
    {
        //sqlstr为查询的sql语句
        this->m_pRecordset->Open((_bstr_t)sqlstr,(IDispatch*)this->m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText); 

        //保存数据集
        int i = 0;
        while(!this->m_pRecordset->adoEOF)//遍历所有记录
        {
              a[i] = m_pRecordset->GetCollect("点号");
              L[i] = m_pRecordset->GetCollect("经度");
              B[i]= m_pRecordset->GetCollect("纬度");
              i++;
              m_pRecordset->MoveNext();//转到下一条纪录
        }
        this->m_pRecordset->Close();  
    }
    catch(_com_error e)
    {
            TCHAR error[100] = {0};
    wmemcpy(error,e.ErrorMessage(),100);
    }
      

  3.   

    //ADO数据库连接分五步走,
    //第一、获取连接(只到数据库在什么地方)
    //第二、打开连接 open(必要的用户名和密码)
    //第三、获取字符集 ResultSet(类似数组的数据存储对象),
    //第四、显示数据
    //第五、关闭数据集、关闭连接 //创建个连接对象
    _ConnectionPtr m_pConnection; //对连接进行初始化
    CoInitialize(NULL);
    m_pConnection.CreateInstance(__uuidof(Connection));//第一步、获取连接 try                
    {   
    //第二步、打开连接  参数用 ; 分开
    m_pConnection->ConnectionTimeout = 5;
    //通过这个语句我们的数据库连接真正得到实现了,m_pConnection有了内容了(被附值了)
    m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=包兰R0039D(复线下行)20130813140802.mdb","","",adModeUnknown);
    }
    catch(_com_error e)//捕捉异常

    AfxMessageBox("数据库连接失败,确认数据库包兰R0039D(复线下行)20130813140802.mdb是否在当前路径下!");
    }   //数据集对象
    _RecordsetPtr m_pRecordset;
    //实例化数据集
    m_pRecordset.CreateInstance(__uuidof(Connection));
    try
    {
    //第三步、获取数据集
    m_pRecordset->Open("SELECT * FROM export",_variant_t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
    AfxMessageBox("数据库连接失败!");
    }
    catch(_com_error *e)

    AfxMessageBox(e->ErrorMessage());
    }       _variant_t var;
        char *ID,*name; try//得到表,但表里不一定有数据
        {
            if(!m_pRecordset->BOF) //数据表里是是有数据
                m_pRecordset->MoveFirst(); //将游标(数据集在数据库的叫法)移动到一第一条记录
            else {
                //cout<<"表内数据为空"<<endl;
    AfxMessageBox("表内数据为空");
            }


    //--------------------------------------------------------------------------------------------------------------------------
            // 第四步、显示数据
            //---------------------------------------------------------------------------------------------------------------------------  

    while(!m_pRecordset->adoEOF) //和前面的rename ("EOF", "adoEOF") 想对应 这里使用的是
    //adoEOF代替EOF (当然这里如果前面没有rename也可以使用EOF)
    //判断游标是不是到达最后一条数据
            {
                var = m_pRecordset->GetCollect("ID"); //这是获取表中字段的一种方法“ID”为表字段名
                if(var.vt != VT_NULL)                //判断记录在该有没数据
                    ID= _com_util::ConvertBSTRToString((_bstr_t)var); //由于得到的数据可能不是字符传 这里要转换
    //将他们转成字符串,从而可以在屏幕上显示
                
    var = m_pRecordset->GetCollect("name");
                if(var.vt != VT_NULL)
                    name=_com_util::ConvertBSTRToString((_bstr_t)var);

                cout<<ID<<" is "<<name<<endl;             //打印该记录

                m_pRecordset->MoveNext();                 //游标向走向下条记录
            }
        }
        catch(_com_error *e) //捕获异常
        {
            cout<<e->ErrorMessage()<<endl; //如有错误 ,将错误输出
        }

    //--------------------------------------------------------------------------------------
        //关闭数据集
    //-----------------------------------------------------------------------------------
        m_pRecordset->Close();
        m_pRecordset = NULL;   

    //--------------------------------------------------------------------------------------
        //关闭数据库连接
        //--------------------------------------------------------------------------------------
        if(m_pConnection->State)
    m_pConnection->Close();
        m_pConnection= NULL;

    //这两步是一定要做的,否则时间长内存可能会被用尽这是我找的,你看我那地方还需要修改修改啊???