ASP对FoxPro自由表(DBF文件)的操作

2016-01-29 18:53 65 1 收藏

ASP对FoxPro自由表(DBF文件)的操作,ASP对FoxPro自由表(DBF文件)的操作

【 tulaoshi.com - ASP 】

 

一、问题的提出
    最近一个项目中遇到ASP对FoxPro库表(*.DBF)的操作问题。现实中确有许多应用软件使用DBF表,如何在网络环境中使用这些数据,使很多朋友一筹莫展。
    本人也查了许多资料,没有找到解决方法的详细说明。经过试验,初步解决了这个问题,拿出来和大家分享。
    本文试图解决以下问题:
    1. ASP联接由FoxPro 生成的自由表(*.dbf文件)
    2. 将多种类型的数据及图形文件同时存入dbf表中
    (示例程序可从http://www.netop.cc/downloads/dbf.rar得到)

二、环境
   Windows2000 + IIS5.0 + IE6.0(SP1)
   DBF文件为Microsoft Visual FoxPro 6.0 生成的自由表(非dbc库)

三、解决途径
1. 连接
   DBF文件的ODBC驱动程序名称为 Microsoft Visual FoxPro Driver,在ASP中,通过Connection对象与其联接,需要注意的是,联接时将DBF所在目录视为库名。以下是具体联接代码:
  
   DIM conn,connstr,db
   db="data"
   Set conn = Server.CreateObject("ADODB.Connection")
   connstr = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;"&_
                 "SourceDB=" & Server.MapPath(db) &";Exclusive=No"
   conn.Open connstr

   以上代码中,data为我的DBF文件所在的相对路径(相对于此代码所在的文件),通过Server.MapPath(db)将其转为绝对路径。
   http://www.connectionstrings.com 给出了很多类型的库表文件的连接字串,其中对DBF文件,给出的连接字串为:
   "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:mydbpath;"
   我用此连接字串没有连接成功,没有进行进一步测试,有兴趣的朋友可以试一下以上字串。
   .www.knowsky.com
2. 在SQL语句中声明表名
   可以用[表名]或[表名.扩展名]的形式在SQL语句中声明要操作的表名,如表文件名为t1.dbf,SQL语句为:
   select * from [t1]  或  select * from [t1.dbf]

3. 各种类型数据的入库操作
   DBF支持的数据类型不是很多,其中值得注意是的Date(日期型)、Memo(备注型)、General(通用型)。在此着重说明一下Data型数据,Memo及Gen型在存储图形文件时用到,稍后说明。
   我一般采用两种方式进行写库操作,一种是使用insert语句,一种是使用addnew方法,对于DBF表,这两种方式略有差别。
   使用insert语句时,要注意Date型数据的书写格式为{^yyyy-mm-dd},分界符不同于Access的#及SQL Server的'。具体SQL语句为:
   insert into [t1.dbf] (name,birthday) values ('MyName',{^1970-1-1})
   在使用addnew方法时,我原先使用的代码为:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/asp/)

   rst.open "[t1]",conn,0,3
   rst.addnew
   rst(0).value = "MyName"
   rst(1).value = {^1970-1-1}
   rst.update
   rst.close
  
   在对SQL Server及Access操作时都没有问题,但是对DBF文件操作时出现了问题。经过试验,终于找到了正确的方法:
  
   sql = "select * from t1"
   rst.open sql,conn,0,3
   rst.addnew
   rst(0).value = "MyName"
   rst(1).value = {^1970-1-1}
   rst.update
   rst.close

   请注意以上两段代码的差别,主要在SQL语句上。前面说过,在SQL语句中,可以用[表名]或[表名.dbf]的方式声明表文件,但在使用addnew方法时,表名不可带扩展名,而且不可加方括号,否则会提示“非简单表名,不可更新” 。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/asp/)

4. 图形文件的存储
   DBF表中,备注形及通用型字段都可用于存储图形、音像、文本等文件(请参考http://www.chinadesign.com.cn/NewsContents1.asp?id=2663)。在这里,我们将字段类型设为memo(binary)(二进制备注型),使用rst(n).AppendChunk()方法将得到的图片二进制数据写入,使用Response.BinaryWrite()方法将二进制数据还原为图片。图片入库的相关文章很多,在此不再赘述。
   至于使用General(通用型)字段存储图片,我试了一下,没有成功,也就没有再试。

5. 数据的删除
   可以使用delete语句将数据删除,但是删除后打开表文件,发现数据只是做了删除标记,并未真正从表中删除。在Foxpro中,要使用pack命令将数据永久删除。查了些资料,说是VB无法

来源:http://www.tulaoshi.com/n/20160129/1507688.html

延伸阅读
Windows 操作系统的注册表包含了很多有关计算机运行的配置方式,打开注册表我们可以看到注册表是按类似于目录的树结构组织的,其中第二级目录包含了五个预定义主键分别是:HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG。 下面我们来分别解释这5个类的作用 HKEY_CLASSES_ROOT该主键包...
VC++ 中对注册表的操作 作者:lixiaosan 日期:04/29/2006 这里只是对注册表的几个api函数的使用简介。在MFC中,你可以使用CRegKey类操作注册表,关于CRegKey类在这里就不做介绍了,可以参考msdn。 以下代码实现了在HKEY_LOCAL_MACHINE的SOFTWARE下打开MyProgram键,如果MyProgram不存在,则创建之,存在则进行查询  HKEY hKEY;  ...
标签: SQLServer
 通过使用这个存储过程,你就可以方便的对数据库中具有一定规则的或者全部表,对这里的字段进行各种操作,具体看示例! CREATE PROCEDURE SP_execSQLonDB  (@TABLENAME VARCHAR(50),        --表名条件   @COLUMNNAME VARCHAR(50),    ...
标签: ASP
  ASP(Active Server Pages)是微软公司为开发互联网应用程序所提出的工具之一,ASP与数据库的联接一般通过ADO(Activex Data Object)来实现的,就象《计算机世界》2000年3月20日的《用ASP对SQL Server数据库操作》文章介绍的一样,ADO可以完全支持Microsoft SQL Server ,但对应用更加广泛、机制更加复杂的ORACLE 数据库服务就有一些困...
标签: Web开发
文件夹操作主要包括创建、复制、移动和删除文件夹,检查文件夹是否存在以及指定路径中某文件夹中相应的文件对象。完成这些操作可以使用 FileSystemObjec对象或 Folder 对象的方法。 一、使用 FileSystemObject 对象的相应方法进行文件夹进行操作 1、使用 FileSystemObject 对象创建文件夹时,先要创建 FileSystemObject 对象,再...

经验教程

279

收藏

47
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部