高分相赠:用代码创建数据库(150分)

  • 主题发起人 主题发起人 liounzhou
  • 开始时间 开始时间
L

liounzhou

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何用代码实现动态创建一个物理数据库文件如Acess 2000?我用的是Dephi 6
我在网上找到了这段代码,可是报错:找不到可安装的ISAM!请各位帮忙看一下:
function CreateDatabase(mDatabaseName: String;ObjHandle:THandle): Boolean;
var
CreateAccess:OLEVariant;
begin
Result:=False;
try
CreateAccess:=CreateOleObject('ADOX.Catalog');
try
CreateAccess.Create(Format('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s%s.mdb',
[ExtractFilePath(Application.ExeName),mDatabaseName]));
finally
CreateAccess:=Unassigned;
end;
except
on e:Exception do Windows.MessageBox(ObjHandle,PChar(e.Message),'´íÎó!',
MB_OK+MB_ICONSTOP);
end;
Result:=True;
end;
 
这样就行了不用那么麻烦。
procedure TDMMain.CreateMDB(DBName: string); //系统需要安装MADAC
var
CreateAccess: OleVariant;
begin
CreateAccess := CreateOleObject('ADOX.Catalog');
CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DBName);
end;
 
忘记说了,记得引用Comobj单元
 
安装一下Ado高版本吧。MDAC_Typ.exe。
如果你的不行,那么 飘摇客 兄的也应该不行。
Provider=Microsoft.Jet.OLEDB.4.0这个应该没有写错。
 
另外还有其他方法建立,不过推荐使用你自己写的那种Ado的。
下面为Dao建立的。

uses DAO97;
实现部分:
procedure TFormOffice.BitBtn4Click(Sender: TObject);
var
Engine:DBEngine;
begin
Engine:=CoDBEngine.Create;
Engine.CreateDatabase('c:/NewAccess.mdb',';LANGID=0x0804;CP=936;COUNTRY=0;',dbEncrypt);
end;
 
这个是ODBC的。
先声明:
function SQLConfigDataSource(hwnd:HWND;fRequest:WORD;lpszDriver:String;lpszAttributes:String):boolean;stdcall;external 'ODBCCP32.dll';

const ODBC_ADD_DSN = 1;
var
sWrkStr:String;
FileName:String;

FileName:='aa.mdb';
sWrkStr := 'CREATE_DB="' + FileName + '";' ;
SQLConfigDataSource(0,ODBC_ADD_DSN,'Microsoft access Driver (*.mdb)',PChar(sWrkStr));
 
这个是我昨天写的,当然也是学来的,成功了,
uses .........., ComObj;

procedure TAppForm.N2Click(Sender: TObject);
var SaveDlg: TSaveDialog;
vCatalog: OleVariant;
password, SConnectionString: String;
begin
SaveDlg := TSaveDialog.Create(nil);
SaveDlg.Filter := 'Database files (*.mdb)|*.mdb|All files (*.*)|*.*';
SaveDlg.Title := '保存新数据库';
if SaveDlg.Execute then begin


if InputQuery('密码保护', '请输入数据库连接密码', password) then begin
if password <> '' then
begin
SConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;' +'Jet OLEDB:Database Password=%s;';
vCatalog:= CreateOleObject('ADOX.Catalog');

vCatalog.Create(format(SConnectionString,[SaveDlg.FileName,password]));
end
else
MessageDlg('密码格式不正确', mtError, [mbOK], 0);
end
end
else
MessageDlg('数据库没有创建', mtWarning, [mbOK], 0);
end;
 
学得蛮快嘛:)
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1370655
 
用Dimond ADO控件很好
 
多人接受答案了。
 
后退
顶部