最简单的查询.dbf数据库中对应记录的方法是什么?

 所属目录:Java   |   类型:技术问答   |   时间:2007-05-21
 问题:

想让上有一“查询”按钮、一文本输入框,文本输入框中输入学生考号,按“查询”按钮,在网页上显示xx.dbf数据库中对应的记录,最简单的方法是什么?有没有不用编程的方法?  
 

· 网友精彩回答:

发表者:sx_lxh

抄一篇文章:  
   
  asp对foxpro自由表dbf文件的操作  
  一、问题的提出  
          最近一个项目中遇到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方法时,我原先使用的代码为:  
        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操作,那vbs当然更无法实现了。一般的解决办法是每隔一段时间,将表中的数据(当然是未做删除标记的)导入一新表,删除原表,再将新表改名为原表名。  
  6.   数据和图片同时入库  
        这个问题不属于本文要讨论的范围,网上也有很多文章给出了解决办法,这里顺带说一下。  
        我是利用“化境”无组件上传程序实现的这个功能。有些朋友会问,“化境”上传是写成文件,没有入库的方法啊。不错,但是稍加改动,可以得到图片的二进制数据,然后入库即可。我的示例中,化境程序改动的部分都做了注释,请参考。  
  四、结语  
          本文主要讨论asp对dbf自由表的操作,如果是dbc库,示例中的inc/conn.asp中给出了相应的连接字串。  
          至此,相信朋友们对dbf表的操作有了大概的了解,结合我的示例,相信大家可以开发出更多的功能。  
          good   luck!  
 

.
处理 SSI 文件时出错
© 2006-2008 All Rights Reserved