怎样用delphi动态创建access数据库及表啊?知道的指点一下,谢谢了。

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/2912/2913000.xml?temp=.6706659
      

  2.   

    建库:
      //创建ACCESS2000数据库
      function CreateAssess2000Database(const DatabaseName : string) : Boolean;
      var
        Cat:OleVariant;
      begin
        Cat:=CreateOleObject('ADOX.Catalog');
        Cat.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DatabaseName);
      end;
    建表就不用问了吧:)
      

  3.   

    这里还有更详细的:
    http://expert.csdn.net/Expert/topic/2751/2751370.xml?temp=.4748041
      

  4.   


    const
      SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
        + 'Jet OLEDB:Database Password=%s;';function GetTempPathFileName(): string;
    var
      SPath, SFile: array[0..254] of char;
    begin
      GetTempPath(254, SPath);
      GetTempFileName(SPath, '~SM', 0, SFile);
      result := SFile;
      DeleteFile(result);
    end;//这里是关键
    function CreateAccessFile(FileName: string; PassWord: string = ''): boolean;
    var
      STempFileName: string;
      vCatalog: OleVariant;
    begin
      STempFileName := GetTempPathFileName;
      try
        vCatalog := CreateOleObject('ADOX.Catalog');
        vCatalog.Create(format(SConnectionString, [STempFileName, PassWord]));
        result := CopyFile(PChar(STempFileName), PChar(FileName), True);
        DeleteFile(STempFileName);
      except
        result := false;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      CreateAccessFile('C:\aa.mdb');
    end;
      

  5.   

    经典代码,别人给的:http://expert.csdn.net/Expert/topic/2885/2885163.xml?temp=.1103327  我的问题:
      代码:const
      SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
        + 'Jet OLEDB:Database Password=%s;';implementation
    {$R *.dfm}
    //=============================================================================
    // Procedure: GetTempPathFileName
    // Author   : ysai
    // Date     : 2003-01-27
    // Arguments: (None)
    // Result   : string
    //=============================================================================function GetTempPathFileName(): string;
    //取得临时文件名
    var
      SPath, SFile: array[0..254] of char;
    begin
      GetTempPath(254, SPath);
      GetTempFileName(SPath, '~SM', 0, SFile);
      result := SFile;
      DeleteFile(result);
    end;//=============================================================================
    // Procedure: CreateAccessFile
    // Author   : ysai
    // Date     : 2003-01-27
    // Arguments: FileName:String;PassWord:string=''
    // Result   : boolean
    //=============================================================================function CreateAccessFile(FileName: string; PassWord: string = ''): boolean;
    //建立Access文件,如果文件存在则失败var
      STempFileName: string;
      vCatalog: OleVariant;
    begin
      STempFileName := GetTempPathFileName;
      try
        vCatalog := CreateOleObject('ADOX.Catalog');
        vCatalog.Create(format(SConnectionString, [STempFileName, PassWord]));
        result := CopyFile(PChar(STempFileName), PChar(FileName), True);
        DeleteFile(STempFileName);
      except
        result := false;
      end;
    end;//=============================================================================
    // Procedure: CompactDatabase
    // Author   : ysai
    // Date     : 2003-01-27
    // Arguments: AFileName,APassWord:string
    // Result   : boolean
    //=============================================================================function CompactDatabase(AFileName, APassWord: string): boolean;
    //压缩与修复数据库,覆盖源文件var
      STempFileName: string;
      vJE: OleVariant;
    begin
      STempFileName := GetTempPathFileName;
      try
        vJE := CreateOleObject('JRO.JetEngine');
        vJE.CompactDatabase(format(SConnectionString, [AFileName, APassWord]),
          format(SConnectionString, [STempFileName, APassWord]));
        result := CopyFile(PChar(STempFileName), PChar(AFileName), false);
        DeleteFile(STempFileName);
      except
        result := false;
      end;
    end;
      

  6.   

    用SQL来进行生成和取消,完全可以实现,CreatTabkle,Drop就可以