把文本中的记录写入数据库中

有一个文本文件,文件中每一行是一套记录,一条记录有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技术,下次介绍
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我知道了。这是一个很典型的数据库操作实例,需要使用Python的sqlite3模块进行操作。以下是实现该功能的代码: ```python import sqlite3 # 连接到数据库 conn = sqlite3.connect('students.db') # 创建学生记录表 conn.execute('''CREATE TABLE students (pNo TEXT PRIMARY KEY, pName TEXT NOT NULL, pGender TEXT NOT NULL, pAge INT NOT NULL);''') # 插入学生记录 conn.execute("INSERT INTO students (pNo,pName,pGender,pAge) \ VALUES ('10001', 'Tom', 'Male', 20)") conn.execute("INSERT INTO students (pNo,pName,pGender,pAge) \ VALUES ('10002', 'Jerry', 'Female', 19)") # 提交更改 conn.commit() # 读取所有记录写入文件 cursor = conn.execute("SELECT pNo, pName, pGender, pAge from students") with open('d:\\stu_info1.txt', 'w') as f: for row in cursor: f.write(str(row[0]) + ',' + row[1] + ',' + row[2] + ',' + str(row[3]) + '\n') # 从文件读取并插入到数据库 with open('d:\\stu_info2.txt', 'r') as f: for line in f: pNo, pName, pGender, pAge = line.strip().split(',') conn.execute("INSERT INTO students (pNo,pName,pGender,pAge) \ VALUES ('{}', '{}', '{}', {})".format(pNo, pName, pGender, pAge)) conn.commit() # 读取所有记录并显示在屏幕上 cursor = conn.execute("SELECT pNo, pName, pGender, pAge from students") for row in cursor: print("Student No: {}, Name: {}, Gender: {}, Age: {}".format(row[0], row[1], row[2], row[3])) # 关闭连接 conn.close() ``` 在这个程序,我们首先连接到数据库,然后创建了一个名为students的表格,包含学号、姓名、性别、年龄等字段。然后我们插入了两条学生记录,接着读取了所有记录并将其写入了文件d:\\stu_info1.txt。然后我们从文件d:\\stu_info2.txt读取学生信息,并将其插入到数据库。最后我们再次读取数据库的所有记录,并将其显示在屏幕上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值