数据库oracle文件怎么打开,Oracle

1634e7bd7932aaa44074c3f6104324fb.png

2018-08-15

怎样打开.db的数据库文件啊

如果你的要求是用一种语言来打开数据库的话,那么你必须首先了解dbf文件的格式,这一点非常的重要。下面是一个c语言写的读dbf文件的小程序,你看看吧!,你可以编辑一下,看可否达到你的要求!#include #include #define NFIELDS 5#define TRUE 1#define FALSE 0/* DBF文件头结构 */struct dbf_head{ char vers; unsigned char yy,mm,dd; unsigned int no_recs; unsigned short head_len,rec_len; char reserved[20];};...全部

如果你的要求是用一种语言来打开数据库的话,那么你必须首先了解dbf文件的格式,这一点非常的重要。下面是一个c语言写的读dbf文件的小程序,你看看吧!,你可以编辑一下,看可否达到你的要求!#include #include #define NFIELDS 5#define TRUE 1#define FALSE 0/* DBF文件头结构 */struct dbf_head{ char vers; unsigned char yy,mm,dd; unsigned int no_recs; unsigned short head_len,rec_len; char reserved[20];};/* DBF字段描述结构 */struct field_element{ char field_name[11]; char field_type; unsigned int offset; unsigned char field_length; unsigned char field_decimal; char reserved1[2]; char dbaseiv_id; char reserved2[10]; char production_index;};char *dbf_fields_name[NFIELDS]={ "a", "b","c","d","e"};/* 全局变量 */struct dbf_head file_head;struct field_element *fields;int *length;unsigned int *offset;/* 整形数字节顺序改变函数 */void revert_unsigned_short(unsigned short *a){ unsigned short left,right; left=right=*a; *a=((left&0x00ff)>8);}void revert_unsigned_int(unsigned int *a){ unsigned int first,second,third,forth; first=second=third=forth=*a; *a=((first&0x000000ff)>8)|((forth&0xff000000)>>24);}/* 主函数代码 */void main(){ register int i,j; FILE *fp_dat; char *buffer; char *allspace; int fields_count, matched=FALSE; unsigned int counts; /* 打开dbf文件 */ if((fp_dat=fopen("a。

dbf","rb"))==NULL){ fprintf(stderr,"Cannot open dbf file to read!

"); exit(1); } /* 读取表头纪录 */ fseek(fp_dat,0L,SEEK_SET); fread((void*)&file_head,sizeof(struct dbf_head),1,fp_dat); revert_unsigned_int(&file_head。

no_recs); revert_unsigned_short(&file_head。head_len); revert_unsigned_short(&file_head。rec_len); /* 计算字段数 */ fields_count=(file_head。

head_len-sizeof(struct dbf_head)-1-263)/sizeof(struct field_element); /* 开辟存储字段子记录的空间 */ if((fields=(struct field_element*)malloc(sizeof(struct field_element)*fields_count))==NULL){ fprintf(stderr,"Cannot allocate memory for fields array !

"); fclose(fp_dat); exit(2); } /* 开辟存储一条数据记录的空间 */ if((buffer=(char*)malloc(sizeof(char)*file_head。

rec_len))==NULL){ fprintf(stderr,"Cannot allocate memory for record buffer!

"); fclose(fp_dat); exit(3); } /* 开辟一个全为空格的纪录,以便后面做比较 */ if((allspace=(char*)malloc(sizeof(char)*file_head。

rec_len))==NULL){ fprintf(stderr,"Cannot allocate memory for all_space record buffer!

"); fclose(fp_dat); exit(4); } else{ memset((void*)allspace,'x20',file_head。

rec_len-1); allspace[file_head。rec_len]=' '; } /* 读取所有的字段子记录,调整整形数的字节顺序 */ fread((void*)fields,sizeof(struct field_element),fields_count,fp_dat); for(i=0;i revert_unsigned_int(&fields[i]。

offset); /* 计算各个字段的字节偏移量,第一字节为删除标记 */ fields[0]。offset=1; for(i=1;i fields[i]。offset=fields[i-1]。

offset (unsigned short)fields[i-1]。field_length; /* 开辟存储字段长度和偏移量的数组 */ length=(int*)malloc(sizeof(int)*fields_count); offset=(unsigned int*)malloc(sizeof(unsigned int)*fields_count); if(length==NULL||offset==NULL){ fprintf(stderr,"Cannot allocate memory for array length or offset。

"); exit(-1); } /* 找到所需字段的偏移量和长度,如果没有相应字段,程序退出 */ for(i=0;i { for(j=0;j { if(strcmp(dbf_fields_name[i],fields[j]。

field_name)==0) { offset[i]=fields[j]。offset - 1; length[i]=fields[j]。field_length; matched=TRUE; break; } if(!matched){ fprintf(stderr,"dbf file structure is invalid, field %s not found。

", dbf_fields_name[i]); exit(-1); } else matched=FALSE; } } /* 定位文件指针到数据记录的开始位置 */ fseek(fp_dat,(long)file_head。

head_len,SEEK_SET); /* 读取每条记录的字段数据 */ for(counts=0;counts { /* 如果有删除标记,跳到下一条记录 */ if(fgetc(fp_dat)==(int)'x2a') { fseek(fp_dat,(int)file_head。

rec_len-1,SEEK_CUR); continue; } fread((void*)buffer,(int)file_head。rec_len-1,1,fp_dat); buffer[file_head。

rec_len]=' '; /*去掉全为空格的记录行*/ if(strcmp(buffer,allspace)==0) continue; } fclose(fp_dat); /* 释放开辟的空间 */ free(buffer); free(allspace); free(offset); free(length);}。

收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值