使用的是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];用来计算!
请教各位朋友出谋划策!
小弟感激不尽!
数据库为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];用来计算!
请教各位朋友出谋划策!
小弟感激不尽!
解决方案 »
- 如何获得CTreeCtrl中ITEM的类型
- COM的套件问题?signal、apartment、free的困惑
- vc6 调试问题
- 【求助】一个 向 CArray 里 Add 类对象 的问题。多谢
- DEBUG模式下运行良好,但是在RELEASE模式下编译也通过了,但是就是一运行就出现内存不能读的错误!!
- 几个多文档界面设计中的小问题, 不过还请各位达人帮忙啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 请问如何得到一个VC写的DLL文件本身在硬盘中位置?比如扇区号???
- 菜鸟求助!!!
- 接手维护一个软件模快,大概有一万行左右的代码,请问下有经验的朋友,你们大概花多久熟悉?
- 如何用代码修改 Windows Firewall/Internet Connection Sharing (ICS)服务的启动类型和服务状态。
- MFC打印预览问题
- 请教sql2008安装问题!
_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);
}
//第一、获取连接(只到数据库在什么地方)
//第二、打开连接 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;
//这两步是一定要做的,否则时间长内存可能会被用尽这是我找的,你看我那地方还需要修改修改啊???