在程序中动态生成access数据库,然后用Ado去连接它,怎么做

解决方案 »

  1.   

    function CreateADOXCatalog(const FileName: String; Password: WideString): Boolean;
    var
      ADOXCat: OleVariant;
      tmpPath: String;
    begin
      Result :=True;
      if FileExists(FileName)=True then  Exit; //文件已经存在
      tmpPath :=ExtractFilePath(FileName);
      Delete(tmpPath,Length(tmpPath),1);//去掉最后一个反斜杠
      if not DirectoryExists(tmpPath) then  CreateDir(tmpPath);//路径不存在创建它
      try
        ADOXCat :=CreateOleObject('ADOX.Catalog');
        ADOXCat.Create(Format(ADOXCatCreateString, [FileName, Password]));
      except
        Result :=False;
      end;//try ..except
    end;
    //创建一个数据表
    function CreateOneTable(AQuery: TADOQuery; sqlText: String): Boolean;
    begin
      try
        Result :=True;
        if sqlText ='' then  Exit;
        with AQuery do
        begin
          Active :=False;
          SQL.Text :=sqlText;
          Prepared :=True;
          ExecSQL;
        end;//end of with .. do
      except
       //
        Result :=False;
      end;//end of try ..except
    end;{连接数据库}
      function Do_DBConnection(adoConn: TADOConnection; LinkStr: WideString): Boolean;
    {连接数据库}
    function Do_DBConnection(adoConn: TADOConnection; LinkStr: WideString): Boolean;
    begin
      Result :=True;
      try
        with adoConn do
        begin
          Connected :=False;
          CursorLocation :=clUseClient;//使用这种类型的好处是,利用缓冲的优点
          LoginPrompt :=False;//连接时不出现登录对话框
          Mode :=cmReadWrite;
          Provider :='Microsoft.Jet.OLEDB.4.0';
          ConnectionString :=LinkStr;
          KeepConnection :=False;
          Connected :=True;
        end;//with ..do
      except
        MessageBox(Application.Handle, PChar('数据库连接失败,该连接参数代码如下:' +
                   #13#10 + LinkStr + #13#10'有无法解决的问题请与开发商联系!'),'Error',
                   MB_OK + MB_ICONSTOP);
        Result :=False;
      end;//try ..except
    end;
      

  2.   

    创建数据库文件的参数}
      ADOXCatCreateString: WideString ='Provider=Microsoft.Jet.OLEDB.4.0;'
              + 'Data Source=%s;'//数据库名(包括路径)
              + 'Jet OLEDB:Database Password=%s';  //= mdbPassword{TADOConnection 连接数据库的参数}
      ADOLinkString ='Provider=Microsoft.Jet.OLEDB.4.0;'
              + 'Password=%s;' //用户工作组(*.mdw)密码
              + 'User ID=%s;'  //用户工作组(*.mdw)用户名Admin
              + 'Data Source=%s;'  //数据库文件(*.mdb)位置
              + 'Persist Security Info=True;'
              + 'Mode=ReadWrite;'  // 数据库打开方式
              + 'Extended Properties="";' //默认值为空
              + 'Jet OLEDB:System Database="";' //用户工作组文件
              + 'Jet OLEDB:Registry Path="";'   //注册路径
              + 'Jet OLEDB:Database Password=%s;'  //数据库密码
              + 'Jet OLEDB:Engine Type=1;'
              + 'Jet OLEDB:Database Locking Mode=1;'
              + 'Jet OLEDB:Global Partial Bulk Ops=2;'
              + 'Jet OLEDB:Global Bulk Transactions=1;'
              + 'Jet OLEDB:New Database Password=%s;'  //?密码
              + 'Jet OLEDB:Create System Database=False;'
              + 'Jet OLEDB:Encrypt Database=False;'
              + 'Jet OLEDB:Don''t Copy Locale on Compact=False;'
              + 'Jet OLEDB:Compact Without Replica Repair=False;'
              + 'Jet OLEDB:SFP=False';{表结构}
      Tableinfo_Struct: String ='create table tableinfo('
            +#13#10' tab_index int not null default 0,'//序号
            +#13#10' tab_name varchar(32) not null unique,'//表名称
            +#13#10' tab_records int default 0,'//记录数
            +#13#10' tab_tasks int default 0,'//任务数
            +#13#10' tab_datetime varchar(32) not null default now(),'//表创建时间
            +#13#10' tab_last_date varchar(32) null,'//修改时间
            +#13#10' tab_fields varchar(254) null,'//可视字段
            +#13#10' tab_re memo null)';//表的描述
      

  3.   

    以上是ArJianzeng 在delphibbs上的回复