#include <afx.h>
#include "CDBOperation.h"
#include <iostream>
#include <string>
#include <afxinet.h>
#include <afxwin.h>
#undef UNICODE
#define DATA_BUFSIZE 1024
typedef struct query_catalog{
u_short cat_num; //发送目录条数
u_short cat_size; //单个目录名大小
char *delimiter; //分隔符
char cat_name[DATA_BUFSIZE]; //发送所有目录名称
} Q_CAT;
using namespace std;
void main( )
{
CDBOperation dbObject;
CString sql;
bool bConn = dbObject.ConnToDB();
if (true == bConn)
{
cout<<"数据库连接成功...."<<endl;
}
_RecordsetPtr pRst=NULL; //创建一个数据集智能指针
pRst.CreateInstance(__uuidof(Recordset));//初始化Recordset指针
char type;
while(true)
{
/* char str[20];
cout<<"请输入查询日期(例如:1990-1-1):"<<endl;
cin.getline(str,20);
CString tm1(str);*/
//CTime tm = CTime::GetCurrentTime();//获取系统当前时间
//CString tm_str=tm.Format("%Y-%m-%d %H-%M-%S");
//sql="insert into RECV_TABLE (SID,CONTENT,TIME) values ('S1111','北京大学',to_date('"+tm_str+"','yyyy-mm-dd hh24:mi:ss'))";
sql= "select * from recv_table rt WHERE (to_char(rt.time,'yyyy-mm-dd'))='2014-03-03' ";
pRst = dbObject.ExecuteWithResSQL(sql);
if (NULL == pRst)
{
printf("查询数据出现错误!\n");
break;
}
if (pRst->adoEOF)
{
pRst->Close();
printf("There is no records in this table...\n");
break;
}
/封装目录部分///
_variant_t vTime; int count=0;
Q_CAT q_cat;
int n=0;
CString mulu="";
q_cat.delimiter = "--";
if(!pRst->BOF)
{
pRst->MoveFirst();//记录集指针移动到查询结果集的最前面
}
memset(q_cat.cat_name,0,DATA_BUFSIZE);
while (!pRst->adoEOF)
{
count++;
vTime = pRst->GetCollect(_variant_t("TIME"));
if(vTime.vt != VT_NULL)
{
cout<<(LPCTSTR)(_bstr_t)vTime<<endl;
mulu += (LPCTSTR)(_bstr_t)vTime;
mulu += q_cat.delimiter;
}
pRst->MoveNext();
}
q_cat.cat_size = sizeof(vTime);
q_cat.cat_num = count;
strcpy(q_cat.cat_name,(LPCTSTR)mulu);
cout<<"catalogue's size: "<<q_cat.cat_size<<endl;
cout<<"catalogue's num: "<<q_cat.cat_num<<endl;
cout<<"catalogue's name: "<<q_cat.cat_name<<endl;
拆解目录部分/
string part;
string str(q_cat.cat_name);
string::size_type pos, trunc_size;
int delilen = strlen(q_cat.delimiter);
trunc_size= (q_cat.cat_size+delilen)*q_cat.cat_num;
while (str.find(q_cat.delimiter))
{
n++;
pos = str.find(q_cat.delimiter);
part = str.substr(0,pos);
if (n < q_cat.cat_num)
{
str = str.substr(pos+2,trunc_size);
}else if (n == q_cat.cat_num)
{
part = str.substr(0,pos);
cout<<part<<endl;
break;
}
cout<<part<<endl;
}
if(cin.get() =='q')
{
exit(1);
}
}
system("PAUSE");
}
Oracle将某字段查询结果按自定义格式封装输出以及解拆操作
最新推荐文章于 2021-04-28 10:19:37 发布