当然可以,比如用ADOX可以建立MDB,不过我没试过。
我用另一种方式实现,建一个空库,打包到资源里...

解决方案 »

  1.   

    为什么要用Delphi的数据库呢?
      

  2.   

    Delphi 编译好的程序不是只有一个文件么?VB 就有很多运行库。
      

  3.   

    写SQL语句(create database ……)
      

  4.   

    这是建BDE接口的ProdoxDB数据库的例子。其实Help里就有一个完整的例子。初学者应多看Help文档。用其它数据库接口的则可以考虑用SQL语句。  Table1.DatabaseName := DataMod.Option.ProjDir;
      Table1.TableName := (*DataMod.Option.ProjName+'-*)'List';
      if not Table1.Exists then
      begin
        with Table1 do
        begin
          with FieldDefs do
          begin
            Clear;
            Add('ID',ftAutoInc,0,false);
            Add('PN',ftString,10,true);
            Add('Part',ftString,20,false);
            Add('Special',ftString,100,false);
            Add('Display',ftString,20,false);
            Add('Number',ftFloat,0,true);
            Add('Ref',ftMemo,30,false);
            Add('Note',ftMemo,30,false);
          end;
          with IndexDefs do
          begin
            Clear;
            Add('','ID',[ixPrimary, ixUnique]);
          end;
          CreateTable;
        end;
      end;
      

  5.   

    Table1.DatabaseName := 'c:\abc\cde'; //你存放的目录名
      Table1.TableName := 'List'; //要创建的表名。
      

  6.   

    使用SQL语句,如 CREATE  TABLE  guestbook (visitor VARCHAR(40),comments TEXT,entrydate DATETIME)
      

  7.   

    我刚搞定,用 ADOX 对象创建 MDB ,JRO 对象压缩数据库,ADODB 对象操作数据库
      

  8.   

    是创库,不是创表,
    搜一下,Hank的长项,贴子很多;
      

  9.   

     回复人:Hank(星星农场) (2001-4-27 9:10:00)  得0分 
    作者自述:原来的有点说明上的错误,其实用ADO、DAO都可以,创建access97/Access2000也都可以,即使添加用户、表、查询也可以,具体的在有些杂志上可能已经出现!下面是我的具体例子,具体解释部分现在可能不能全部贴出,代码部分如下:unit FirstFrm;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Buttons, StdCtrls;type
      TOfficeForm = class(TForm)
        Label1: TLabel;
        edtOLECreate: TEdit;
        spOLECreate: TSpeedButton;
        Label2: TLabel;
        edtOLECompact: TEdit;
        spOLECompact: TSpeedButton;
        Label3: TLabel;
        edtDAOCreate: TEdit;
        spDAOCreate: TSpeedButton;
        Label4: TLabel;
        edtDAOCompact: TEdit;
        spDAOCompact: TSpeedButton;
        procedure spOLECreateClick(Sender: TObject);
        procedure spOLECompactClick(Sender: TObject);
        procedure spDAOCreateClick(Sender: TObject);
        procedure spDAOCompactClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      OfficeForm: TOfficeForm;implementationuses ComObj, DAO97;{$R *.DFM}procedure TOfficeForm.spOLECreateClick(Sender: TObject);
    var
      CreateAccess: OleVariant;
    begin
      //通过建立ADOX(Microsoft ActiveX(R) Data Objects Extensions)对象进行访问
      CreateAccess:=CreateOleObject('ADOX.Catalog');
      //通过OLE方式创建Access97格式的数据库
      CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.3.51;Data Source=c:\Aceco97.mdb');
      //通过OLE方式创建Access2000格式的数据库
      CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Aceco2000.mdb');
    end;procedure TOfficeForm.spOLECompactClick(Sender: TObject);
    var
      CompactAccess: OleVariant;
    begin
      //通过建立JRO(Microsoft Jet and Replication Objects)对象进行访问
      CompactAccess:=CreateOleObject('JRO.JetEngine');
      //通过OLE方式压缩Access97格式的数据库
      CompactAccess.CompactDatabase('Provider=Microsoft.Jet.OLEDB.3.51;Data Source=c:\Aceco97.mdb',
                                    'Provider=Microsoft.Jet.OLEDB.3.51;Data Source=c:\Aceco97Back.mdb;Jet OLEDB:Encrypt Database=True');
      //删除旧的数据库文件
      DeleteFile('c:\Aceco97.mdb');
      //将压缩后的数据库文件改回原名
      RenameFile('c:\Aceco97Back.mdb','c:\Aceco97.mdb');
      //通过OLE方式压缩Access2000格式的数据库
      CompactAccess.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Aceco2000.mdb',
                                    'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Aceco2000Back.mdb;Jet OLEDB:Encrypt Database=True');
      DeleteFile('c:\Aceco2000.mdb');
      RenameFile('c:\Aceco2000Back.mdb','c:\Aceco2000.mdb');
    end;procedure TOfficeForm.spDAOCreateClick(Sender: TObject);
    var
      AccessEngine: DBEngine;
    begin
      AccessEngine:=CoDBEngine.Create;
      //通过DAO方式创建Access97格式的数据库
      AccessEngine.CreateDatabase('c:\Aceco97.mdb',';LANGID=0x0804;CP=936;COUNTRY=0;',dbEncrypt);
    end;procedure TOfficeForm.spDAOCompactClick(Sender: TObject);
    var
      AccessEngine: DBEngine;
    begin
      AccessEngine:=CoDBEngine.Create;
      //通过DAO方式压缩Access97格式的数据库
      AccessEngine.CompactDatabase('c:\Aceco97.mdb','c:\Aceco97Back.mdb','',0,'');
      DeleteFile('c:\Aceco97.mdb');
      RenameFile('c:\Aceco97Back.mdb','c:\Aceco97.mdb');
    end;end.  
     回复人:yhec(^0^) (2001-4-27 9:54:00)  得0分 
    这好象是DAO方式,通过OLE调用DAO对象的方法;
    要在目标机上注册Dao350.dll与dao360.dll 
     回复人:yhec(^0^) (2001-4-27 9:56:00)  得0分 
    前面是ADO,后面是DAO,脑子不够用了
     
     回复人:luhongjun(过江项羽) (2001-4-27 10:00:00)  得0分 
    Hank(星星农场) ok
    给分吧 
     回复人:yhec(^0^) (2001-4-27 10:04:00)  得0分 
    这种未封装的调用真不易搞懂,封装后的东西 却又丧失了一些关键、却不常用的
    功能,咳!  
     回复人:Hank(星星农场) (2001-4-27 10:21:00)  得0分 
    TO:zhangzm(超级菜鸟)由于以前的那个贴子,杂志已经约稿,而且已经写好发出,现在当然不能将所有的解释贴出(总要讲点职业道德吧),结合http://www.csdn.net/expert/topic/53/53461.shtm 看就没问题了!当然,用DAO模式建立、修复Access2000格式的数据库需要下载Delphi5.0的补丁才可以,下面将版本对应情况写出:Access97  ------OLE DB 3.51------ADO 1.0------DAO3.5
    Access2000------OLE DB 4.0 ------ADO 2.0------DAO3.6目前ADO是2.6版本!