两种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等等,这时大家再判断一下属于哪种数据库吧
sqlite数据库一般是这个后缀名。但是db文件不一定是sqlite数据库。sqlite。exe这个文件可以用命令行的方式打开,Linux系统的有图形界面。Windows中我没有找过,可能有。
1、数据透视视图是处理Excel常用的手段,而应用数据透视视图的第一步就是导入数据,如本例中,表中有889167行数据,那么将这些数据导入Excel表中将是一个很漫长的过程,可以借助SQL语句选择性的导入数据,以此来提交数据加载的速度。
2打开空白Excel,依次点击数据选项卡自Access按钮。
3在d出的选择数据源对话框中打开ACCESS文件,本文中则打开文件名为“无线路由”的实例文件;
4在d出的导入数据对话框中根据需求选择数据的显示方式,是“表”、“数据透视表”、“数据透视图”等等,本文中选择“数据透视图”,并单击对话框下方的属性按钮;
5在d出的链接属性对话框中选择定义选项卡,更改命令类型为“SQL”,命令文本为SQL代码,至此发现Excel已经为筛选出了所有安卓设备。
delphi 、VB、VC等等编程类软件都可以打开的。但显示的数据方式不一定一样。 手上没有这些软件的话,试试office里的access。
有些专用软件DB数据是加密不公开的,普通方式还无法打开
如果你的要求是用一种语言来打开数据库的话,那么你必须首先了解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);
}
以上就是关于DB扩展名的数据库文件怎么打开:两种db数据库的打开方式全部的内容,包括:DB扩展名的数据库文件怎么打开:两种db数据库的打开方式、(*.db)格式的数据库文件怎么打开、如何打开.db数据库文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)