vc中cfile如何读取sdf数据文件中的数据

vc中cfile如何读取sdf数据文件中的数据,第1张

用CFile来读取SDF数据文件的数据,几乎是不可能的。

如果你确定SDF是数据库文件,那么应该是SQL

SERVER的PDA版本SQLCE的数据文件,这种文件的格式非常复杂,其中包含了数据表、视图、索引、触发器、存储过程,很多信息甚至是加密格式的,这是一个非公开的专有数据格式,必须用指定的软件或者开发商(微软)提供的数据库链接组件来打开。

而CFile,只是以二进制和文本方式打开文件,无法自行处理这些复杂结构。

数据库是不会存储文件的,他只是存储文件的存放地址,比如你想存储一个文件,你可以把文件名,文件大小,文件格式,文件存储的地址(d:/file/fiel.txt)存到数据库表中。

当你想获取文件的时候就直接读取文件的存储地址File file=new File("d:/file/fiel.txt"),这样就能存储数据文件了

typedef struct informationTable

{

char name[20]

char sex

char birth[11] //日期需要11长度

informationTable *next

}INFO

void CReadFiletoLinkDlg::OnButton1() //在MFC中写的,你自己定义自己的类吧。哈哈

{

// TODO: Add your control notification handler code here

INFO *p,*head,*r

p=(INFO*)malloc(sizeof(INFO))

head=p

p->next=NULL

r=p

CFile mFile(_T("D:\\data.txt"),CFile::modeRead)

if(mFile.GetLength()<2) return

char *sRead = new char[mFile.GetLength()]

mFile.Read(sRead,mFile.GetLength())

sRead[mFile.GetLength()]='\0'

char tmp[65535]={0}

int i=0

int j=0

while(i<mFile.GetLength()+1){

if(sRead[i]=='\n'||sRead[i]=='\0'){

// AfxMessageBox(&sRead[j])

strncpy(tmp,&sRead[j],i-j)

j=i

char name[100]={0}

char sex[2]

char birthday[100]={0}

sscanf(tmp,"%s %s %s",name,sex,birthday)

// sprintf(tmp,"%s %s %s",name,sex,birthday)

// AfxMessageBox(tmp)

// AfxMessageBox(name)

// AfxMessageBox(sex)

// AfxMessageBox(birthday)

p=(INFO*)malloc(sizeof(INFO))

strcpy(p->name,name)

p->sex=sex[0]

strcpy(p->birth,birthday)

//后插法

p->next=NULL

r->next=p

r=r->next

}

i++

}

mFile.Close()

//访问链表,测试用

INFO *s

s=head->next

while(s!=NULL){

char tmp[65535]={0}

sprintf(tmp,"%s %c %s",s->name,s->sex,s->birth)

AfxMessageBox(tmp)

s=s->next

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6620456.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-25
下一篇 2023-03-25

发表评论

登录后才能评论

评论列表(0条)

保存