C++操作DB+FILE
来源:互联网 发布:魔蝎数据怎么填 编辑:程序博客网 时间:2024/05/19 00:39
#include <windows.h>
#include <stdio.h>
#include <iostream.h>
#include <memory.h>
#include <string.h>
#include <msxml.h>
#include <atlbase.h>
#import "msado15.dll" no_namespace rename ("EOF", "adoEOF") //ado connection database
// s8.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
char* CloneString(char* src)
{
if(!src)
return NULL;
char* dst = (char*)malloc(strlen(src)+1);
memset(dst, 0, strlen(src)+1);
strcpy(dst,src);
return dst;
}
void Output(char* txt){
cout<<txt<<endl;
}
void Output(const char* txt){
cout<<txt<<endl;
}
int GetCollectInt(_RecordsetPtr m_pRecordset, char* key)
{
VARIANT var = m_pRecordset->GetCollect(key);
if(var.vt == VT_NULL)
return NULL;
return var.intVal;
}
char* GetCollectString(_RecordsetPtr m_pRecordset, char* key)
{
VARIANT var = m_pRecordset->GetCollect(key);
if(var.vt == VT_NULL)
return NULL;
return CloneString((char*)(_bstr_t)var);
}
int main(int argc, char* argv[])
{
while(true){
Sleep(5000);
CoInitialize(NULL);//!!!!!!!!!!!!!
_ConnectionPtr m_pConnOracle;
_RecordsetPtr m_pRecordset;
HRESULT hr;
char conn[_MAX_PATH+1] = {0};
FILE* fp;
//char RssFile[_MAX_PATH+1] = {0};
char* temp;
//char LINK[_MAX_URL] = {0};
GetPrivateProfileString("database", "OraConnStr", "", conn, MAX_PATH, "./Config.ini");
fp = fopen("c://1.txt", "wb");
try
{
char SQL[1024]={0};
sprintf(SQL,"select * from tabs");
hr = m_pConnOracle.CreateInstance("ADODB.Connection");//paperid
if(SUCCEEDED(hr)){
m_pConnOracle->Open(conn,"","",adModeUnknown);
Output("okcon");
}
else
{
Output("false");
}
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(SQL,
m_pConnOracle. GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
Output("OKrs");
while(!m_pRecordset->adoEOF)
{
temp = GetCollectString(m_pRecordset,"table_name");
//GetCollectString(m_pRecordset, "publink");
//GetCollectInt(m_pRecordset,"nsid"));
Output(temp);
fwrite(temp, 1, strlen(temp), fp);
fwrite("/x0d/n", 1, strlen("/x0d/n"), fp);
m_pRecordset->MoveNext();
}
fclose(fp);
m_pRecordset->Close();
m_pRecordset.Release();
m_pConnOracle->Close();
m_pConnOracle.Release();
}
catch(_com_error *e)
{
Output("数据库打开失败");
Output("Error in Function: ConnectDataBase");
Output(e->ErrorMessage());
return FALSE;
}
}
return TRUE;
}
======================================================
BOOL MakeRssFeed(int paperid, int channelid)
{
_ConnectionPtr m_pConnOracle;
_RecordsetPtr m_pRecordset;
HRESULT hr;
char conn[_MAX_PATH+1] = {0};
FILE* fp;
char RssFile[_MAX_PATH+1] = {0};
char* temp;
char LINK[_MAX_URL] = {0};
GetPrivateProfileString("database", "OraConnStr", "", conn, MAX_PATH, "./Config.ini");
try
{
char SQL[_MAX_URL]={0};
sprintf(SQL,"select * from (select nsid,title,author,to_char(pubtime,'yyyy-mm-dd') as pubtime ,to_char(pubtime,'yyyy-mm/dd') as publink from nsreleaselib where to_char(pubtime,'yymmdd')=to_char(sysdate,'yymmdd') and masterid in (select distinct nodeid from typestruct where rootid=%d and nodename in (select pagenumber from pageinfo where paperid=%d and to_char(pagedate,'yymmdd')=to_char(sysdate,'yymmdd') and pagecnname like (select pagename from tmp_pagename_id where pid=%d)||'%'))) order by pubtime desc",
paperid,paperid,channelid);
hr = m_pConnOracle.CreateInstance("ADODB.Connection");//paperid
if(SUCCEEDED(hr)){
// 打开本地Access库db1.mdb
m_pConnOracle->Open(conn,"","",adModeUnknown);
}
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(SQL,
m_pConnOracle. GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
Output("OK0");
sprintf(RssFile, "./RssFeed/rss_%d.xml", channelid);
fp = fopen(RssFile, "wb");
if(fp)
Output("OK1");
fwrite("<?xml version='1.0' encoding='gb2312'?>/x0d/n", 1, strlen("<?xml version='1.0' encoding='gb2312'?>/x0d/n"), fp);
fwrite("<rss version='2.0'>/x0d/n", 1, strlen("<rss version='2.0'>/x0d/n"), fp);
fwrite("<channel>/x0d/n", 1, strlen("<channel>/x0d/n"), fp);
fwrite("<link>http://epaper.tianjindaily.com.cn</link>/x0d/n", 1,
strlen("<link>http://epaper.tianjindaily.com.cn</link>/x0d/n"), fp);
Output("begin loop");
while(!m_pRecordset->adoEOF){
fwrite("<item>/x0d/n", 1, strlen("<item>/x0d/n"), fp);
fwrite("<title>", 1, strlen("<title>"), fp);
temp = GetCollectString(m_pRecordset, "title");
fwrite(temp, 1, strlen(temp), fp);
fwrite("</title>/x0d/n", 1, strlen("</title>/x0d/n"), fp);
fwrite("<link>", 1, strlen("<link>"), fp);
temp = GetCollectString(m_pRecordset, "publink");
sprintf(LINK,"http://epaper.tianjindaily.com.cn/tjrb/tjrb/%s/content_%d.htm",
temp, GetCollectInt(m_pRecordset,"nsid"));
free(temp);
fwrite(LINK, 1, strlen(LINK), fp);
fwrite("</link>/x0d/n", 1, strlen("</link>/x0d/n"), fp);
fwrite("</item>/x0d/n", 1, strlen("</item>/x0d/n"), fp);
m_pRecordset->MoveNext();
}
fwrite("</channel>/x0d/n", 1, strlen("</channel>/x0d/n"), fp);
fwrite("</rss>/x0d/n", 1, strlen("</rss>/x0d/n"), fp);
fclose(fp);
Output("OK2");
m_pRecordset->Close();
m_pRecordset.Release();
m_pConnOracle->Close();
m_pConnOracle.Release();
}
catch(_com_error *e)
{
Output("数据库打开失败");
Output("Error in Function: ConnectDataBase");
Output(e->ErrorMessage());
return FALSE;
}
return TRUE;
}
- C++操作DB+FILE
- C FILE操作
- C FILE 操作
- C File 操作
- C语言FILE操作
- C#file文件操作
- C语言FILE操作
- C#.Net ini file 操作
- C语言文件操作(File)
- C语言FILE读写操作
- DB操作
- db file sequential read
- db file sequential read
- db file sequential read
- db file scattered read
- db file parallel read
- db file scattered read
- db file scattered read
- java ftp客户端源代码
- 日历控件(收藏)
- PROGRAMING FEELING:抵制诱惑,灵活规划
- 发改委回应电力集团涨电价要求 称仍需观察
- c# 面试题1
- C++操作DB+FILE
- rmp命令详解
- Beijing tour
- 如何访问web service
- How Java Web Servers Work
- Yangtze River Cruise
- 舍得
- 创建窗口
- Beijing/Xi’an/Guilin/Shanghai Tour