有一个文本文件,文件中每一行是一套记录,一条记录有8个字段,每个字段中间用TAB空开,将文件中的记录写入ACCESS数据库中的XZJH表中,操作如下:
CTYDataP dp; //自定义的一个操作数据库的类
dp.OpenDatabase("Tool.mdb"); //连接名为tool.mdb的数据库
dp.OpenDataSet("select * from xzjh"); //打开select * from xzjh数据集
CStdioFile sf(_T("C_XZ_JH.txt"),CFile::modeRead); //打开名为C_XZ_JH.txt的文件
CString line;
CString temp[8];
while(sf.ReadString(line))
{
int j=0,i=0;
while(j!=-1)
{
j=line.Find('/t');
if(j==-1)
break;
temp[i]=line.Left(j);
i++;
line=line.Right(line.GetLength()-j-1);
}
temp[7]=line;
dp.m_pRecordset->AddNew();
dp.m_pRecordset->put_Collect(_variant_t("区管号"),_variant_t(temp[0]));
dp.m_pRecordset->put_Collect(_variant_t("单位编号"),_variant_t(temp[1]));
dp.m_pRecordset->put_Collect(_variant_t("单位名称"),_variant_t(temp[2]));
dp.m_pRecordset->put_Collect(_variant_t("参保号"),_variant_t(temp[3]));
dp.m_pRecordset->put_Collect(_variant_t("姓名"),_variant_t(temp[4]));
dp.m_pRecordset->put_Collect(_variant_t("性别"),_variant_t(temp[5]));
dp.m_pRecordset->put_Collect(_variant_t("身份证"),_variant_t(temp[6]));
dp.m_pRecordset->put_Collect(_variant_t("位置码"),_variant_t(temp[7]));
dp.m_pRecordset->put_Collect(_variant_t("标志"),_variant_t("n"));
dp.m_pRecordset->Update();
}
内层的while循环读取一条记录中的单个字段,保存到数组temp中。
下面是一些函数的说明:
CString::Find(t),在字符串中查找t,找到就返回t在字符串中的位置,位置从0开始。t可以是单个字符,可以是字符串。
CString::Left(n),在字符串中截获子串,返回从左边第一个字符开始的n个字符。
CString::Right(n),在字符串中截获子串,返回从右边第一个字符开始的n个字符。
CStdioFile::ReadString(line),读取文件中的一行,以字符串的形式保存在line中。
数据库的操作采用ADO技术,下次介绍