200分泪求一文件入库程序,我等了好久了,急~
我有一个文件夹“D:\123”里面有一些TXT文件,文件名为ABC0721.TXT,BCD0725.TXT,ACD0730.TXT等等,里面的数字代表日期,我现在希望按照系统时间把相应的文件写入SQL数据库.(数据库已用ADO连接),比如,今天是7月30号,那就将文件名里带有 "0730 "字样的文件写如库中.
文件的内容格式为:
aaa 1414
bbb 1111
... ...
要求写入的表的字段为: "id "(存放aaa,bbb,...), "data "(存放1414,1111...), "time "(系统时间,格式 "年月日 "), "insertime "(文件入库时间)
希望大家帮我写一个完整的程序,小弟本身不是学计算机的,但是工作等着要用,先谢谢大家了,同样的问题我已经发过2个帖子但都没有满意答复,如果谁帮我解决了,那两个帖子的100分也归你了,地址为http://community.csdn.net/Expert/topic/5640/5640503.xml?temp=.5341761
http://community.csdn.net/Expert/topic/5653/5653864.xml?temp=.4233362
辛苦各位了!小弟期盼中...
[解决办法]
楼下要再回贴,看清楚,楼主要的不是思路,是能运行得完整代码~(忍不住再汗一下- -!)
[解决办法]
.c文件
//---------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h "
#include "StrUtils.hpp "
#include "FileCtrl.hpp "
//---------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm "
TForm1 *Form1;
//---------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TADOQuery *q=new TADOQuery(this);
TSearchRec f;
TStringList *list1=new TStringList();
TStringList *list2=new TStringList();
TStringList *list3=new TStringList();
if(!ADOConnection1-> Connected)
{
ADOConnection1-> Connected = true;
}
q-> Connection=ADOConnection1;
AnsiString datestring=Now().CurrentDate().FormatString( "MMDD ");
AnsiString allfilename;
AnsiString filename;
allfilename=return_all_filename( "D:\\ymd\\ ");
list1-> Delimiter = '| ';
list1-> DelimitedText = allfilename;
for(int i=0;i <list1-> Count;i++)//的到文件个数及文件名
{
filename = list1-> Strings[i];
if(filename.SubString(3,4)!=datestring)//不是当天的文件则不处理
{
continue;
}
list2-> LoadFromFile(list1-> Strings[i]);//将符合条件的文件内容加载
for(int j=0;j <list2-> Count;j++)
{
list3-> DelimitedText = list2-> Strings[j];//将文件的其中一行给list3拆分
for(int m=0;m <list3-> Count;m++)
{
//插入SQL表:
q-> Close();
q-> SQL-> Clear();
q-> SQL-> Add( "insert into ymd(stationnum,rain,observtimes,inserttimes) "
"values(\ ' "+list3-> Strings[0]+ "\ ',\ ' "+list3-> Strings[1]+ "\ ',\ ' "+
Now().CurrentDateTime().FormatString( "YYYY-MM-DD HH:MM:SS ")+ "\ ',getdate()) ");
try
{
q-> ExecSQL();
}
catch(Exception &e)
{
ShowMessage(e.Message);
}
}
}
list1-> Clear();
}
delete q;
delete list3;
delete list2;
delete list1;
}
//---------------------------------------
AnsiString TForm1::return_all_filename(AnsiString dirpath)
{
//TODO: Add your source code here
TFileListBox *FileListBox1;
FileListBox1 = new TFileListBox(this);
FileListBox1-> Visible = false;
FileListBox1-> Parent = Form1;
FileListBox1-> ApplyFilePath(dirpath);
AnsiString file_string = " ";
for(int i=0;i <FileListBox1-> Count;i++)
{
file_string += FileListBox1-> Items-> Strings[i];
file_string += "| ";
}
delete FileListBox1;
return file_string;
}