delhi 如何动态创建一个ACCESS数据库文件?

解决方案 »

  1.   

    procedure Tform1.CreateDb(DbName: string);
    var
     Dbnew:OleVariant;
    begin
     if FileExists(DbName) then
     begin
       if MessageBox(Application.Handle,PChar('数据库 '
         + DbName + ' 已存在!'+ #13#10 +'是否覆盖?'),
         '警告',MB_YESNO + MB_ICONWARNING) = idNo then exit;
       if not DeleteFile(DbName) then
       begin
         MessageBox(Application.Handle,
           PChar('不能删除数据库:' + DbName),
           '错误',MB_OK + MB_ICONERROR);
         exit;
       end;
     end;dbnew:=CreateOleObject('ADOX.Catalog');
    dbnew.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DbName);
    adoq1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
     +dbname+';Persist Security Info=False';
    adoq1.Close;
    adoq1.SQL.Text := 'Create Table 测试 (ID INT not null,'
      +'姓名 char(8) not null,年龄 INT not null)';
    adoq1.ExecSQL;
    adoq1.Close;
    adoq1.SQL.Text := 'Create UNIQUE Index IDIndex ON 测试 (ID)';
    adoq1.ExecSQL;
    adoq1.Close;
    adoq1.SQL.Text := 'Create Index xmIndex ON 测试 (姓名)';
    adoq1.ExecSQL;
    adoq1.Close;
    adoq1.SQL.Text := 'Create Index nlIndex ON 测试 (年龄)';
    adoq1.ExecSQL;
    MessageBox(Application.Handle,
     PChar('数据库:' + DbName+'创建完成'),
     'OK',MB_OK + MB_ICONWARNING);
    end;