在线用户    站点地图 技术论坛 文档中心 站点导航 资源下载 语言参考 教程专题 站点统计 业务项目 使用帮助
您的位置
MSDN参考新加了CSS2参考,全中文,制作精良。245k下载。           新加了sxf_sxf推荐的"动态网页专家指导" 下载!          新加了lsg2002lsg推荐的"ASP.NET高级编程(PDF)" 下载!          新加了DHTML代码预览!!,功能强大哦!欢迎试用          新加了网友lincong为大家提供的SQL Server 2000 程序员指南,有点大,但同时也就说明内容全咯!           新加了网友ibra为大家提供的北大的JAVA课件,很适合初学者入门           新加了一个java的连接缓冲池代码示例           新加了人月神话电子版下载!软件工程巨著哦~~           更新了评分标准,引入了“专家分”概念,相信可以更好的激励大家的学习!详情请看“使用帮助”           新加了由网友GGG提供的“IIS超级管理手册”,值得一看哦!(虽然我没看过 :P )           新加了“英雄榜”,欢迎测试!           “无组件上传·从原理剖析到实践”已经全部完成,源码全部开放,有兴趣的朋友请到文档中心一探究竟。  您的位置  首页>文档中心>ASP>文档A0000916 在同一窗口中打开页面中的链接 在新窗口中打开页面中的链接 将ASPCHINA设为首页 将ASPCHINA加入书签    
 LOGIN HERE
用户:
密码: 忘记密码
记住密码 用户注册 游客进入
相关文章

.NET中各种数据库连接大全!!

数据库连接2

ASP中连接数据库的5种方法

数据库连接问题

万能的数据库连接程序

关于数据源连接提供者和数据源连接

数据库连接
发表文章
ASP中对FoxPro自由表(DBF文件)的操作

作者:亦青     提交人:亦青     发布时间:05-07-08     文章类型:原创     浏览量:3299
参考链结:http://    
关键字:库连接|FoxPro|DBF|图片入库
[本文档没有附件]
字体:    视力保护色: 杏仁黄  秋叶褐  胭脂红  芥末绿  天蓝  雪青  灰  银河白(默认色) [A0000916]

一、问题的提出
    经常看到网上有朋友问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;"
 

  我用此联接字串没有联接成功,也没有进行进一步测试,有兴趣的朋友可以试一下以上字串。

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型数据的分界符为{^...},不同于Access的#及SQL Server的'。具体SQL语句为:
 
  insert into [t1.dbf] (name,birthday) values ('MyName',{^1970-1-1})
 

  在使用addnew方法时,我原先使用的代码为:
 
  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方法时,表名不可带扩展名,而且不可加方括号,否则会提示“非简单表名,不可更新” 。

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

5. 数据的删除
  可以使用delete语句将数据删除,但是删除后打开表文件,发现数据只是做了删除标记,并未真正从表中删除。在Foxpro中,要使用pack命令将数据永久删除。查了些资料,说是VB无法实现pack操作,那vbscript当然更无法实现了。一般的解决办法是每隔一段时间,将表中的数据(当然是未做删除标记的)导入一新表,删除原表,再将新表改名为原表名。

6. 数据和图片同时入库
  这个问题不属于本文要讨论的范围,网上也有很多文章给出了解决办法,这里顺带说一下。
  我是利用“化境”无组件上传程序实现的这个功能。有些朋友会问,“化境”上传是写成文件,没有入库的方法啊。不错,但是稍加改动,可以得到图片的二进制数据,然后入库即可。我的示例中,化境程序改动的部分都做了注释,请参考。

四、结语
    本文主要讨论ASP对DBF自由表的操作,如果是DBC库,示例中的inc/conn.asp中给出了相应的联接字串。
    至此,相信朋友们对DBF表的操作有了大概的了解,结合我的示例,相信大家可以开发出更多的功能。
    GOOD LUCK!

关于这篇文章的评论 [注意:这里仅仅是给大家提供了一个发表对文章本身看法的地方,如果有疑问,请到论坛提出] 我要提问!
miles        2005/7/11 15:32:00
:)
日期这个很变态,呵呵
标题
内容
发言
*您尚未以注册用户身份登录,不能发表评论。这里登录
您的位置
  (c)2000-2020 Yup Studio, all rights reserved.  
132.8125