想在一台机器上建立一个原本不存在的数据库别名,“DBtest” , 路径是“c:\dbtest\”. 数据库文件是“test.mdb”, 库文件中包含一个表“users”,里面有字段“id (int), name (String),age(int)”。求教:如果用delphi动态建立以上这些东西,该如何做?

解决方案 »

  1.   

    Const  
       SConnectionString              =  'Provider=Microsoft.Jet.OLEDB.4.0;Data  Source=%s;'  
                                                                   +'Jet  OLEDB:Database  Password=%s;';  
    function  CreateAccessFile(FileName:String;PassWord:string=''):boolean;  
    //建立Access文件,如果文件存在则失败  
    var  
       STempFileName:string;  
       vCatalog:OleVariant;  
    begin  
       STempFileName:='d:\temp\123.mdb';  
       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;
      

  2.   

    procedure  TForm1.Button2Click(Sender:  TObject);  
    var  AccessDB:OleVariant;  
    begin  
       try  
       AccessDB:=CreateOleObject('ADOX.Catalog');  
       AccessDB.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data  Source=c:\mydb.mdb');  
       finally  
       AccessDB:=VarNull;  
       end;  
    end;  
    建表直接用ADOQuery1.sql.add('create  table  okok(a  int,b  char(20))');  
    明白了吧!
      

  3.   

    建别名可以用:session.addalias()//参数记不太清了自己查一下吧
    建数据库用sql
      

  4.   

    使用database.session.addalias()需要安装BDE
      

  5.   

    //创建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;
      

  6.   

    赋默认值:创建:
    ADOQuery1.SQL.Text:='create Table tablename (字段1 Char(10) NOT NULL Default 1,字段2....)';
    ADOQuery1.ExecSQL;修改:
    ADOQuery1.SQL.Text:='Alter Table tablename2 ALTER COLUMN 字段1 number(10)';
    ADOQuery1.ExecSQL;