如何打开.db文件?

如何打开.db文件?,第1张

这是数据数据存放文件。每种软件都有它自己的存放格式,就是数据的排列方式。后缀名均为DB。
delphi 、VB、VC等等编程类软件都可以打开的。但显示的数据方式不一定一样。 手上没有这些软件的话,试试office里的access。
有些专用软件DB数据是加密不公开的,普通方式还无法打开。
你是不是想看看QQ目录中的QQglobaldb文件里有什么?那里面没啥东西的
跟他的聊天室、搜索、短信等功能有相关。所以是加密的。又没什么特别文件。普通的编程工具无法读取的。使用winhex和UE等可基本判断内容。
另外提醒,乱动数据库文件会使你已经正常使用软件可能发生故障。

手机打不开,只能在电脑端打开, *** 作方法如下:

*** 作设备:戴尔电脑

*** 作系统:win10

*** 作软件:SQLite Expert Professional 3 db文件管理器

1、首先准备必备的工作,准备好SQLite Expert Professional 3 db文件管理器,和一个手机db文件。

2、SQLite Expert 可以在百度下载,下载完成后按照安装提示进行安装,具体安装过程我写到另外一篇经验中了,大家可以点击参考资料中的连接进行参考。

3、手机db文件可以从手机中软件获取或者从eclipse中的DDMS中进行获取,如下图,将videodb导出到电脑桌面。

4、然后,就可以打开sqlite软件,将桌面上的videodb文件直接拖到sqlite中。

如果你的要求是用一种语言来打开数据库的话,那么你必须首先了解dbf文件的格式,这一点非常的重要。下面是一个c语言写的读dbf文件的小程序,你看看吧!,你可以编辑一下,看可否达到你的要求!
#include <stdlibh>
#include <stdioh>
#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("adbf","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_headno_recs);
revert_unsigned_short(&file_headhead_len);
revert_unsigned_short(&file_headrec_len);

/ 计算字段数 /
fields_count=(file_headhead_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_headrec_len))==NULL){
fprintf(stderr,"Cannot allocate memory for record buffer!\n");
fclose(fp_dat);
exit(3);
}

/ 开辟一个全为空格的纪录,以便后面做比较 /
if((allspace=(char)malloc(sizeof(char)file_headrec_len))==NULL){
fprintf(stderr,"Cannot allocate memory for all_space record buffer!\n");
fclose(fp_dat);
exit(4);
}
else{
memset((void)allspace,'\x20',file_headrec_len-1);
allspace[file_headrec_len]='\0';
}

/ 读取所有的字段子记录,调整整形数的字节顺序 /
fread((void)fields,sizeof(struct field_element),fields_count,fp_dat);
for(i=0;i<fields_count;i++)
revert_unsigned_int(&fields[i]offset);
/ 计算各个字段的字节偏移量,第一字节为删除标记 /
fields[0]offset=1;
for(i=1;i<fields_count;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\n");
exit(-1);
}

/ 找到所需字段的偏移量和长度,如果没有相应字段,程序退出 /
for(i=0;i<NFIELDS;i++)
{
for(j=0;j<fields_count;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\n", dbf_fields_name[i]);
exit(-1);
}
else
matched=FALSE;
}
}

/ 定位文件指针到数据记录的开始位置 /
fseek(fp_dat,(long)file_headhead_len,SEEK_SET);

/ 读取每条记录的字段数据 /
for(counts=0;counts<file_headno_recs;counts++)
{
/ 如果有删除标记,跳到下一条记录 /
if(fgetc(fp_dat)==(int)'\x2a')
{
fseek(fp_dat,(int)file_headrec_len-1,SEEK_CUR);
continue;
}
fread((void)buffer,(int)file_headrec_len-1,1,fp_dat);
buffer[file_headrec_len]='\0';

/去掉全为空格的记录行/
if(strcmp(buffer,allspace)==0)
continue;
}

fclose(fp_dat);

/ 释放开辟的空间 /
free(buffer);
free(allspace);
free(offset);
free(length);
}

如果是sql
server的数据库,首先要附加数据库,通过sqlserver这个软件就能查看数据库。
如果是其他的数据库文件,也必须要安装对应的软件。然后再附件之类的 *** 作就能看到里面的东西。

两种db数据库的打开方式现在桌面级的各种管理系统使用的数据库都是比较常见的类型,比如Access数据库(扩展名为mdb)、xBase类数据库(扩展名为dbf),但有两种扩展名同为db的数据库,分属两个公司的产品,一个是老牌桌面数据库Paradox,这是Borland公司的产品,其广泛使用的时代是在Dos时期,但现在仍有用Delphi、C++Builder等工具开发的产品使用这一类型的数据库,Microsoft的桌面数据引擎JET对其支持也比较完整;另一个是Sybase的ASA数据库,全称叫做Adaptive Server Anywhere,这个数据库以前被称作Sql Anywhere,这个数据库不仅可以用在桌面级,还可以用于服务器级,因为其支持存储过程、触发器等,一般在使用PowerBuilder开发的产品中很常见,因为毕竟是同一个公司的产品。这两个数据库都可以通过Ado来访问,在网上比较流行的链接字符串中都有其介绍,但屡次试验后均不成功,经过数番摸索终于找到其链接字串,现在简介如下:Paradox的链接字串:connConnectionString = "Provider=MicrosoftJetOLEDB40;" _& "Data Source=" &数据库文件存放目录_& ";Jet OLEDB:Engine Type=82;"这里使用JET引擎提供的链接字串,这里有两点需要注意,一是Jet OLEDB:Engine Type=82,这是JET引擎为Paradox数据库提供的驱动类型编号,二是Data Source的值为数据库文件存放路径,而不是数据文件本身,另外还有一点至关重要那就是需要在安装BDE(Borland Data Engine)的机器上才可以运行。ASA的链接字串:connConnectionString = "Driver={Adaptive Server Anywhere 80};DatabaseFile=数据库文件全路径名;Uid=DBA;Pwd=SQL"同样这也是必须在安装ASA的机器上运行,其中的80是指数据库的版本,打开目标机器的ODBC管理器,看看都有那个类型的版本,修改为对应的就应该可以了。Uid=DBA;Pwd=SQL,这是该类型数据库的超级用户名及密码,这是默认的,对于改动过的密码,就要想想其他办法了。还有一些扩展名为db的数据库文件,多数都是经过改变扩展名的其他类型数据库,比如把DBF或MDB的扩展名改为db等等,这时大家再判断一下属于哪种数据库吧

Berkeley DB (DB)是一个高性能的,嵌入数据库编程库,和C语言,C++,Java,Perl,Python,PHP,Tcl以及其他很多语言都有绑定。Berkeley DB可以保存任意类型的键/值对,而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时 *** 作数据库,支持最大256TB的数据,广泛用于各种 *** 作系统包括大多数Unix类 *** 作系统和Windows *** 作系统以及实时 *** 作系统。 20版本或以上的Berkeley DB由Sleepycat Software公司开发,并使用基于自由软件许可协议/私有许可协议的双重授权方式提供[1],附有源代码。开发者如果想把Berkeley DB嵌入在私有软件内需要得到Sleepycat公司的许可,若将软件同样遵循GPL发布,则不需许可即可使用。而20版本以下的则使用BSD授权,可自由作商业用途。 Berkeley DB最初开发的目的是以新的HASH访问算法来代替旧的hsearch函数和大量的dbm实现(如AT&T的dbm,Berkeley的 ndbm,GNU项目的gdbm),Berkeley DB的第一个发行版在1991年出现,当时还包含了B+树数据访问算法。在1992年,BSD UNIX第44发行版中包含了Berkeley DB185版。基本上认为这是Berkeley DB的第一个正式版。在1996年中期,Sleepycat软件公司成立,提供对Berkeley DB的商业支持。在这以后,Berkeley DB得到了广泛的应用,成为一款独树一帜的嵌入式数据库系统。2006年Sleepycat公司被Oracle 公司收购,Berkeley DB成为Oracle数据库家族的一员,Sleepycat原有开发者继续在Oracle开发Berkeley DB,Oracle继续原来的授权方式并且加大了对Berkeley DB的开发力度,继续提升了Berkeley DB在软件行业的声誉。Berkeley DB的当前最新发行版本是4725。 值得注意的是DB是嵌入式数据库系统,而不是常见的关系/对象型数据库,对SQL语言不支持,也不提供数据库常见的高级功能,如存储过程,触发器等。 Berkeley DB的体系结构Berkeley DB以拥有比Microsoft SQL Server和Oracle等数据库系统而言更简单的体系结构而著称。例如,它不支持网络访问—程序通过进程内的API访问数据库。 他不支持SQL或者其他的数据库查询语言,不支持表结构和数据列。 访问数据库的程序自主决定数据如何储存在记录里,Berkeley DB不对记录里的数据进行任何包装,每个记录有且只有两部分:键、值,所以在Berkeley DB的背景下通常用key/data pair指代一个记录。记录和它的键都可以达到4G字节的长度。 尽管架构很简单,Berkeley DB却支持很多高级的数据库特性,比如ACID 数据库事务处理,细粒度锁,XA接口,热备份以及同步复制。 Berkeley DB包含有与某些经典Unix数据库编程库兼容的接口,包括:dbm,ndbm和hsearch。Berkeley DB的核心数据结构数据库环境句柄DB_ENV: 每个DB_ENV相当于一个数据库,它包含了数据库全局信息,比如缓冲区大小、以及对事务、日志、锁等子系统的全局配置信息。数据库句柄结构DB:每个DB相当于关系数据库的一个表,其中存储了很多key/data pair。DB句柄代表了一个包含了若干描述数据库表属性的参数,如数据库访问方法类型、逻辑页面大小、数据库名称等;同时,DB结构中包含了大量的数据库处理函数指针,大多数形式为 (dosomething)(DB , arg1, arg2, …)。其中最重要的有open,close,put,get等函数。 数据库记录结构DBT:DB中的记录由关键字和数据构成,关键字和数据都用结构DBT表示。实际上完全可以把关键字看成特殊的数据。结构中最重要的两个字段是 void data和u_int32_t size,分别对应数据本身和数据的长度。 数据库游标结构DBC:游标(cursor)是数据库应用中常见概念,其本质上就是一个关于特定记录的遍历器。注意到DB支持多重记录(duplicate records),即多条记录有相同关键字,在对多重记录的处理中,使用游标是最容易的方式。 数据库环境句柄结构DB_ENV:环境在DB中属于高级特性,本质上看,环境是多个数据库的包装器。当一个或多个数据库在环境中打开后,环境可以为这些数据库提供多种子系统服务,例如多线/进程处理支持、事务处理支持、高性能支持、日志恢复支持等。 DB中核心数据结构在使用前都要初始化,随后可以调用结构中的函数(指针)完成各种 *** 作,最后必须关闭数据结构。从设计思想的层面上看,这种设计方法是利用面向过程语言实现面对对象编程的一个典范。 Berkeley DB数据访问算法在数据库领域中,数据访问算法对应了数据在硬盘上的存储格式和 *** 作方法。在编写应用程序时,选择合适的算法可能会在运算速度上提高1个甚至多个数量级。大多数数据库都选用B+树算法,DB也不例外,同时还支持HASH算法、Recno算法和Queue算法。接下来,我们将讨论这些算法的特点以及如何根据需要存储数据的特点进行选择。 B+树算法B+树是一个平衡树,关键字有序存储,并且其结构能随数据的插入和删除进行动态调整。为了代码的简单,DB没有实现对关键字的前缀码压缩。B+树支持对数据查询、插入、删除的常数级速度。关键字可以为任意的数据结构HASH算法DB中实际使用的是扩展线性HASH算法(extended linear hashing),可以根据HASH表的增长进行适当的调整。关键字可以为任意的数据结构。 要求每一个记录都有一个逻辑纪录号,逻辑纪录号由算法本身生成。实际上,这和关系型数据库中逻辑主键通常定义为int AUTO型是同一个概念。Recho建立在B+树算法之上,提供了一个存储有序数据的接口。记录的长度可以为定长或不定长。 和Recno方式接近, 只不过记录的长度为定长。数据以定长记录方式存储在队列中,插入 *** 作把记录插入到队列的尾部,相比之下插入速度是最快的。 对算法的选择首先要看关键字的类型,如果为复杂类型,则只能选择B+树或HASH算法,如果关键字为逻辑记录号,则应该选择Recno或Queue算法。当工作集关键字有序时,B+树算法比较合适;如果工作集比较大且基本上关键字为随机分布时,选择HASH算法。Queue算法只能存储定长的记录,在高的并发处理情况下,Queue算法效率较高;如果是其它情况,则选择Recno算法,Recno算法把数据存储为平面文件格式。Berkeley DB的资源链接:官方主页: >GDB文件是InterBase所生成的数据库文件
要把他导入数据库
需要装interbase的驱动,如easysoft或者用delphi 自带的interbase工具等等大量这类型工具
或者最简单的就用这个软件
Total Commander TCPP 插件集v25
支持查看DBF, DBC, DB, MDB, ((GDB)), FDB, XLS, BDE, UDL, DSN 等数据库文件,并允许编辑
只能说是试试!


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

原文地址: https://outofmemory.cn/yw/13349251.html

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

发表评论

登录后才能评论

评论列表(0条)

保存