精华内容
下载资源
问答
  • 怎样打开.db文件?

    万次阅读 2009-04-21 09:57:00
    如果你的要求是用一种语言来打开数据库的话,那么你必须首先了解dbf文件格式,这一点非常的重要。下面是一个c语言写的读dbf文件的小程序,你看看吧!,你可以编辑一下,看可否达到你的要求! #include #include #...

    如果你的要求是用一种语言来打开数据库的话,那么你必须首先了解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=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_head.head_len,SEEK_SET);

    /* 读取每条记录的字段数据 */
    for(counts=0;counts<file_head.no_recs;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]='/0';

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

    fclose(fp_dat);

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

     

     

     

     

    如果有SQL2000 可以使用SQL数据库还原方法
    先随便建立一个数据库
    把数据库文件作为一种备份文件来打开

    首先登录到远程数据库服务器:
    1. 打开SQL Server企业管理器,选择要还原的数据库,单击鼠标右键,单击“所有任务”下的“还原数据库”。
    2. 在新弹出的窗口下的“还原”项选择“从设备”单选框,再单击下面的“选择设备”按钮。
    3. 在新弹出的“选择还原设备”窗口选择“磁盘”再单击“添加”按钮,选择要还原的备份文件。
    4. 确定所有的设置,系统就会将你的数据库进行还原。

     

     

     

    展开全文
  • 一致的数据访问技术ADO与OLE DB的原理以及它们的关系是怎样的 如何在程序中动态得到字段的数据类型 如何手动注册数据源 如何在程序中实现数据源的注册 在Visual C++ 6.0中如何利用UDL文件来建立ADO连接 如何通过ADO...
  • [Q]丢失一个数据文件,但是没有备份,怎么样打开数据库 30 [Q]丢失一个数据文件,没有备份但是有该数据文件创建以来的归档怎么恢复 30 [Q]联机日志损坏如何恢复 31 [Q]怎么样创建RMAN恢复目录 31 [Q]怎么样在恢复的...
  • C#.net_经典编程例子400个

    热门讨论 2013-05-17 09:25:30
    311 7.9 程序控制 312 实例222 打开控制面板中的程序 313 实例223 添加程序托盘 314 实例224 不出现在任务栏上的程序 314 实例225 怎样调用外部的Exe文件 315 实例226 关闭外部已开启...
  • 实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例268 程序运行时禁止关机 364 实例269 获取任务栏尺寸大小 365 实例270 改变系统提示信息...
  • 程序开发范例宝典>>

    2012-10-24 10:41:28
    实例057 在RichTextBox控件中显示RTF格式文件 66 实例058 为RichTextBox控件添加自定义滚动条 68 实例059 在RichTextBox控件中实现关键字描红 69 实例060 在RichTextBox控件中实现项目编号功能 71 ...
  • C#程序开发范例宝典(第2版).part02

    热门讨论 2012-11-12 07:55:11
    一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面...实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...
  • C#程序开发范例宝典(第2版).part13

    热门讨论 2012-11-12 20:17:14
    一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面...实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...
  • 一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面...实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...
  • 一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面...实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...
  • 一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面...实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...
  • 一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面...实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...
  • 一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面...实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...
  • 一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面...实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...
  • 一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面...实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...
  • 一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面...实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...
  • 一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面...实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...
  • 一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面...实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...
  • 实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例268 程序运行时禁止关机 364 实例269 获取任务栏尺寸大小 365 实例270 ...
  • 实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例268 程序运行时禁止关机 364 实例269 获取任务栏尺寸大小 365 实例270 ...
  • 实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例268 程序运行时禁止关机 364 实例269 获取任务栏尺寸大小 365 实例270 ...
  • ifix电子书.7z

    2019-08-31 14:07:41
    系统管理 使用Intellution工作平台,包括如何进行象打开文件并建立应用这样的基本操作。还描述了如何备份和恢复文件、创建工具栏和定制系统子目录。 精通iFIX 利用调度功能安排事件,设计并执行iFIX的冗余功能;...
  • 首先我们将WPE截获的封包保存为文本文件,然后打开它,这时会看到如下的数据(这里我们以金庸群侠传里PK店小二客户端发送的数据为例来讲解): 第一个文件: 复制内容到剪贴板 代码:SEND-> 0000 E6 56 0D 22 7E ...
  • 实例225 怎样调用外部的Exe文件 315 实例226 关闭外部已开启的程序 316 7.10 程序运行 317 实例227 防止程序多次运行 317 实例228 开机后程序自动运行 319 实例229 获取任务栏尺寸大小 320 实例230 ...
  •  实例225 怎样调用外部的Exe文件 315  实例226 关闭外部已开启的程序 316  7.10 程序运行 317  实例227 防止程序多次运行 317  实例228 开机后程序自动运行 319  实例229 获取任务栏尺寸大小 320 ...
  • §12.8.3 用TKPROF格式化跟踪文件 153 §12.8.4 解释TKPROF输出文件 155 §12.8.5 解释计划(Explain Plan)策略 156 §12.8.6 AUTOTRACE 实用程序 157 第13章 数据访问方法 160 §13.1 使用索引的访问方法 161 §...
  • 10.8. 新字符集配置文件格式 10.9. 国家特有字符集 10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6....
  • C#程序开发范例宝典

    2010-12-15 20:05:16
    实例163 打开和关闭CDROM..... 241 实例164 控制PC喇叭发声...... 242 5.5 多媒体应用...... 243 实例165 开机祝福程序...... 243 实例166 制作家庭影集...... 245 实例167 产品电子报价...... 246 实例...

空空如也

空空如也

1 2 3
收藏数 47
精华内容 18
关键字:

怎样打开db格式文件