非access数据库在vb中的编程及应用(2)

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

  使用非access数据库时的参数设置及配置文件的参数读取
  如果在vb的程序中使用了数据库的操作,将应用程序生成exe文件或打包生成安装程序后,则必须提供一个配置(.ini)文件,在ini文件中可以对不同类型的数据库进行设置。如果找不到这个ini文件,将会导致不能访问数据库。通常情况下,ini文件的文件名和应用程序的名称相同,所以如果没有指明,vb的程序会在windows子目录中去找和应用程序同名的ini文件。可以使用vb中的setdataaccessoptions语句来设置ini文件。
  setdataaccessoptions语句的用法如下:
  setdataaccessoptions1,inifilename
  其中inifilename参数指明的是ini文件的带路径的文件名。设为首页值得注意的是,当应用程序找不到这个ini文件时,或在调用opendatabase函数时对其connect参数值没有设定为vb规定的标准值,如对foxpro2.5格式设定为了“foxpro;”(应为“foxpro2.5;”),或者没有安装相应的isam驱动程序,则此时vb会显示一条错误信息“not found installable isam”。
  通常,ini文件在应用程序分发出去以前已经生成,或者在安装时动态生成,也可以在应用程序中自己生成。通常这种ini文件中有“[options]”、“[isam]”、“[installed isams]”、“ [foxpro isam] ” 、 “ [dbase isam] ” 、 “ [paradox isam] ”等设置段,对于一个完整的应用程序则还应有一个属于应用程序自己的设置段如“[mydb]”。可在其中设置datatype、server、database、openonstartup、displaysql、querytimeout等较为重要的数据库参数,并以此限定应用程序一般的运行环境。
  windows api接口函数在kernel.exe动态链接库中提供了一个oswriteprivateprofilestring函数,此函数能按windows下配置文件(.ini)的书写格式写入信息。在通常情况下,应用程序还需要在运行时读取配置文件内相关项的参数。比如pagetimeout(页加锁超时时限)、maxbuffersize(缓冲区大小)、lockretry(加锁失败时重试次数)等参数,通过对这些参数的读取对应用程序运行环境的设定、潜在错误的捕获等均会有很大的改善。
  设此应用程序的配置文件为mydb.ini,则具体过程如下 :  
  funtion getinistring$( byval fname$ , byval szitem$ , byval szdefault$ ) ’ 此 自定义子函数实现ini文件内设置段内参数的读取
  dim tmp as string , x as integer
  tmp = string( 2048,32 )
  x = osgetprivateprofilestring( fname$ , szitem$ , szdefault$ , tmp , len(tmp) , “ mydb.ini ” )
  getinistring = mid$( tmp,1,x )
  end function
  以下这些函数的声明可写在模块文件内,且每个函数的声明必须在一行内
  declare function osgetprivateprofilestring% lib "kernel" alias "getprivateprofilestring" (byval appname$, byval keyname$, byval keydefault$, byval returnstring$, byval numbytes as integer, byval filename$)
  declare function oswriteprivateprofilestring% lib "kernel" alias "writeprivateprofilestring" (byval appname$, byval keyname$, byval keydefault$, byval filename$)
  declare function osgetwindowsdirectory% lib "kernel" alias "getwindowsdirectory" (byval a$, byval b%)
  sub form1_load( )
  dim st as string dim x as integer
  dim tmp as string tmp = string$( 255, 32 )
  ’ 在 ini 文 件 内 为 各 种 数 据 库 格 式 指 明 已 安 装 的 相 应 isam 驱 动 程 序
  x = oswriteprivateprofilestring(" installable isams", "paradox 3.x", "pdx110.dll", "mydb.ini" )
  x = oswriteprivateprofilestring( "installable isams", "dbase iii", "xbs110.dll", "mydb.ini" )
  x = oswriteprivateprofilestring( "installable isams", "dbase iv", "xbs110.dll", "mydb.ini" )
  x = oswriteprivateprofilestring( "installable isams", "foxpro 2.0", "xbs110.dll", "mydb.ini" )
  x = oswriteprivateprofilestring( "installable isams", "foxpro 2.5", "xbs110.dll", "mydb.ini" )
  x = oswriteprivateprofilestring( "installable isams", "btrieve", "btrv110.dll", "mydb.ini" )
  x = oswriteprivateprofilestring( "dbase isam", "deleted", "on", "mydb.ini" )
  ’ 指 明 ini 文 件 的 位 置
  x = osgetwindowsdirectory( tmp, 255 )
  st = mid$( tmp, 1, x ) setdataaccessoption 1, st + "/mydb.ini"
  ’ 获 得 ini 文 件 一 些 参 数
  gwmaxgridrows = val(getinistring( “ mydb.ini ” ,"maxrows", "250" ))
  glquerytimeout = val(getinistring( “ mydb.ini ” ,"querytimeout", "5" ))
  gllogintimeout = val(getinistring( “ mydb.ini ” ,"logintimeout", "20" ))
  end sub  
2009年NCRE考试有新变化
2009年全国计算机等级考试大纲
2009年上半年全国计算机等级考试报名信息汇总

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答