后缀名是db的是什么文件?

后缀名是db的是什么文件?,第1张

后缀是.db的文件数据库文件。

db一般用记事本打开,db是datebase的缩写。

datebase的意思就是数据库

数据库类型包括:

关系数据库、非关系型数据库(NoSQL)

简而言之隐乱数据库可视为电子化的文件柜——存储陪绝电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等 *** 作。

扩展资料

常见的数据库文件格式有以下几种:

CSV

逗号分隔的值文件;DAT

数据文件;WrodPerfect合并数据文件;DB

Borland的Paradox

7表;DBC

Microsoft

Visual

FoxPro数据库容器文件

DBF

dBASE文件,一灶乱档种由Ashton-Tate创建的格式,可以被ACT!、Lipper、FoxPro、Arago、Wordtech、Xbase和类似数据库或与数据库有关产品识别;

可用数据文件(能被Excel

97打开),Oracle

8.1.x表格空间文件;MDB是access文件;NSF

Lotus

Notes数据库;MDF和LDF是SQL

SERVER文件;

另外你还有不少是软件开发者自己定义的数据库文件,大多采用dat,或者把DBA转换为dat,由程序文件名转换处理。

ODB++是一种可扩展的ASCII格式,它可在单个数据库中保存PCB制造和装配所必需的全部工程数据。是能把多种数据格式数据库连接起来的桥梁,是一种双向格式,允许数据上行和下传。

参考资料:百度百科-数据库文件

参考资料:百度百科-数据库

如果你的要求是用一种语言来打开数据库的话,那么你必须首先了解dbf文件的格式,这一点非常的重要。下面是一个c语言写的读dbf文件的小程序,你看看吧!,你可以编辑雹宴一下,看可否达到你的要求!

#include <stdlib.h>

#include <stdio.h>

#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)|((right&0xff00)>>8)

}

void revert_unsigned_int(unsigned int *a)

{

unsigned int first,second,third,forth

first=second=third=forth=*a

*a=((first&0x000000ff)<<24)|((second&0x0000ff00)<<8)|

((third&0x00ff0000)>>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!\n")

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 !\n")

fclose(fp_dat)

exit(2)

}

/* 开辟存储一条数据记录的空间 */

if((buffer=(char*)malloc(sizeof(char)*file_head.rec_len))==NULL){

fprintf(stderr,"Cannot allocate memory for record buffer!\n")

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!\n")

fclose(fp_dat)

exit(4)

}

else{

memset((void*)allspace,'\x20',file_head.rec_len-1)

allspace[file_head.rec_len]='\0'

}

/* 读取所有的字段子记录,调整整形数的字节顺序 */

fread((void*)fields,sizeof(struct field_element),fields_count,fp_dat)

for(i=0i<fields_counti++)

revert_unsigned_int(&fields[i].offset)

/* 计算各个字段的字节偏移量,第一字节为删除标记 */

fields[0].offset=1

for(i=1i<fields_counti++)

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.\n")

exit(-1)

}

/* 找到所需字段的偏移量和长度,如果没有相应字段,程序退出 */

for(i=0i<NFIELDSi++)

{

for(j=0j<fields_countj++)

{

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.\n", dbf_fields_name[i])

exit(-1)

}

else

matched=FALSE

}

}

/* 定位文件指针到数据记录的开始位置 */

fseek(fp_dat,(long)file_head.head_len,SEEK_SET)

/* 读取每条记录的字段数据 */

for(counts=0counts<file_head.no_recscounts++)

{

/* 如果有删除标记,跳到下一条记录 */

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]='\0'

/*去掉全为空格的记录行*/

if(strcmp(buffer,allspace)==0)

continue

}

fclose(fp_dat)

/* 释放开辟的空间 */

free(buffer)

free(allspace)

free(offset)

free(length)

}

1、打开程序后,可以看到程前肆序左边的“数据库列表”。展开可以查看到所有打开过的数毕兄据库。

2、 点击一个.db文件,把这个.db直接拖拉进程序窗口。

3、显示“注册数据库”,点击【确定】,这样就可以用 SQLiteDeveloper管理这个.db文件了。

4、 展开左边数据库列表,找到刚才注册的.db文件。点击右键菜单的【打开数据库】。

5、打开数据库后可以看到这个.db文件中有很多的数据表,选择其中一个,右键点击【查询数据】。则可以查看这个表的数据内容。

6、 数据库看完后记得【关闭数据库】。否则这个.db文件公手悔袭被程序占用不能移动与删除。


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

原文地址: https://outofmemory.cn/tougao/8159735.html

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

发表评论

登录后才能评论

评论列表(0条)

保存