我在vc中用ADO的方法连接数据库,之前一直获取数据库表中的记录集,现在要统计数据的小时平均值,我在sql中用语句
select CONVERT(varchar(13),时间,120)as '时间',AVG(剂量率) as '平均值' from GM数据
group by CONVERT(varchar(13),时间,120);请问我在VC中如何实现同样的功能,期待中!
select CONVERT(varchar(13),时间,120)as '时间',AVG(剂量率) as '平均值' from GM数据
group by CONVERT(varchar(13),时间,120);请问我在VC中如何实现同样的功能,期待中!
解决方案 »
- 请问如何读取一个IDB_BITMAP1资源到CDC中呢? 然后用GetPixel取得颜色.
- 读取网页上的数据遇到了问题
- 关于CListCtrl InsertItem的问题
- 关于WINXP 屏蔽CTRL+ALT+DEL键的问题
- 一个MDI程序,当创建的时候,主窗口、子窗口、视图都会发送WM_SIZE消息,请问处理WM_SIZE的先后顺序是什么?
- 如何让程序窗口激活并最大化呈现在屏幕最前方呢?(急..........)
- 请问这些错误是什么意思~
- 请教各位大虾,COM中有关字符类型转换的问题???
- 正调试着程序,怎么后来就不能调试了啊?好像说找不到XX.exe文件??
- idl文件当中定义的helpstring等属性,如何在客户端显示出来?
- 求助:socket编程里IP地址格式的问题?
- vc 2005 制作OCX如何将类作为接口导出
不过你可以把数据读到一个数组,自己计算。
如果熟悉vector,就更简单一些。
CString monitordatasql="select CONVERT(varchar(13),时间,120)as '时间',AVG(剂量率) as '平均值' from GM数据 group by CONVERT(varchar(13),时间,120);"
_ConnectionPtr m_pConnection;
_RecordsetPtr m_monitorser;
m_monitorser=theApp.m_pConnection->Execute((_bstr_t)monitordatasql,NULL,adCmdText);
下面是使用Xproer.OleDb对数据库进行操作的示例:#include "stdafx.h"
#include "XproerDataDef.h"
#include "OleDb/OleDbCommand.h"
#include "OleDb/OleDbConnection.h"
#include "OleDb/OleDbDataReader.h"
#include "OleDb/DataTable.h"
#include "OleDb/DataRow.h"
#include "OleDb/DataValue.h"using namespace Xproer::OleDb;//获取DataTable的示例
void ADODataTable(OleDbCommand& cmd)
{
int count = 0;
cmd.ExecuteScalar(L"select count(*) from xdb_news",count);
auto_ptr<DataTable> table;
table.reset(cmd.ExecuteDataTable(L"select top 10 IsTop from xdb_news")); size_t rowCount = table->GetRowsCount();
for (int i = 0 ; i < rowCount ; ++i)
{
DataRow* row = table->GetRow(i);
DataValue* val = row->GetCel(0);
printf("时间:%d \r\n", val->ToBoolean() );
}
}//使用OleDbDataReader快速读取数据的示例
void ADORead(OleDbCommand& cmd)
{
OleDbDataReader* r = cmd.ExecuteReader(L"select ProductPrice from xdb_news");
USES_CONVERSION;
wstring title;
while(r->Read())
{
//r->GetString(0,title);
//printf("标题:%s \r\n",W2A(title.c_str()));
printf("ID:%f \r\n", r->GetFloat(0) );
}
r->Close();
}//通过变量向数据库安全添加数据的示例
void ADOAdd(OleDbCommand& cmd)
{
cmd.SetCommandText(L"insert into xdb_about(VDouble) values(@VDouble)");
cmd.AddDoubleParam(L"@VDouble",125022.3180); cmd.ExecuteNonQuery();
}//高性能向数据库插入数据的示例
void ADOParam(OleDbCommand& cmd)
{
cmd.SetCommandText(L"delete from xdb_news where ID=@ID;");
cmd.AddInt32Param(L"@ID",886);
cmd.SetPrepared(true); _variant_t index = (short)0;
_ParameterPtr param = cmd.GetCommand()->Parameters->GetItem(index);
param->Value = 887;
cmd.ExecuteNonQuery();
param->Value = 888;
cmd.ExecuteNonQuery();
param->Value = 889;
cmd.ExecuteNonQuery();
param->Value = 890;
cmd.ExecuteNonQuery();
param->Value = 891;
cmd.ExecuteNonQuery();
}//向数据库添加实数的示例
void NumericScaleX(OleDbCommand& cmd)
{
OleDbDataReader* r = cmd.ExecuteReader(L"select ProductPrice from xdb_news");
_RecordsetPtr& rs = r->GetRecordsetPtr();
rs->MoveFirst(); _variant_t vi = (short)0;
FieldPtr fd = rs->Fields->GetItem(vi);
unsigned char numeri = fd->GetNumericScale();
unsigned char precision = fd->GetPrecision(); printf("GetNumericScale:%d\r\n", fd->GetNumericScale() );
printf("GetPrecision:%d\r\n", fd->GetPrecision() );
printf("Value:%f\r\n", (float)fd->Value );
r->Close();
}int _tmain(int argc, _TCHAR* argv[])
{
::CoInitialize(NULL);
OleDbConnection con;
con.SetAccessConStr(L"F:\\vc9\\adoDemo\\Debug\\db.mdb");
con.Open(); OleDbCommand cmd(&con); ADORead(cmd);
con.Close(); ::CoUninitialize();
//printf("总数:%d",count);
system("pause");
return 0;
}
Xproer.OleDb 这个在哪里有下载?