现在的位置: 首页 > 综合 > 正文

如何把数据库和管理系统做到只读媒体或移动媒体上

2013年10月26日 ⁄ 综合 ⁄ 共 1330字 ⁄ 字号 评论关闭

如何把数据库和管理系统做到只读媒体或移动媒体上
一、应用场景:
  1>将过期数据转移,并将清除掉,但又必须能随时查询以前数据
  2>制作便于发放免安装的演示程序
二、制作步骤:
 1>将数据导到access中,将access设置密码
 2>用delphi的adoconnection组件连接access文件
    2.1 用户名称:admin,空白密码打勾
    2.2 将访问权限中的[read],[Share Deny Read],[Share Deny Write]勾上;
    2.3 将Jet OLEDB:DataBase Password的值设为access的密码
    2.4 选择[连接]页的[测试连接],通过OK,确定
    2.5 复制Use Connection string中的内容
 3>将adoconntion的连接字符串去掉,将IsolationLevel=ilBrowse,KeepConntion=false,LoginPrompt=false
 4>在datamodule的创建事件中加入以下代码

  1. var
  2.       mypath,sqlstr:string;
  3.     begin
  4.       mypath:=Extractfiledir(application.ExeName);//取得应用程序所在路径
  5.       sqlstr:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=%s/filename.mdb;';
  6.       sqlstr:=format(sqlstr,[mypath]);//将数据文件放在程序同级目录下
  7.       sqlstr:=sqlstr+'Mode=read|Share Deny Read|Share Deny Write;Jet OLEDB:Database Password=xxxxx;Jet       OLEDB:Engine Type=5;Jet  OLEDB:Database Locking Mode=0';
  8.       cn.ConnectionString:=sqlstr;
  9.       cn.Connected:=true;//联接数据库
  10.     end;

   
  5>其它的数据表打开就不说了,以前的都是关键问题
  6>程序制作好后,可以刻录到光盘或复制到U盘即可
三、特点
   运行程序的电脑无需安装access,方便;缺点:access的数据量不能太大,我用的数据只有主表4万多条,从表25万多条,感觉读取速度不快

附:
Mode常数
常数           含义
adModeUnknown   未指定数据源的连接许可权(默认值)
adModeRead     连接是只读的
adModeReadWrite   连接是可读写的
adModeShareDenyNone  不拒绝其他用户的读写访问(Jet OLE DB Provider的默认值)
adModeShareDenyRead  拒绝其他用户打开到数据源的读连接
adModeShareDenyWrite  拒绝其他用户打开到数据源的写连接
adModeShareExclusive  以独占方式打开数据源
adModeWrite  连接是只写的   

抱歉!评论已关闭.