我用如下方法在delphi中创建数据库出错,请帮忙看看,谢谢!(100分)

H

hbgrape

Unregistered / Unconfirmed
GUEST, unregistred user!
//新建数据库设备
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('CREATE DATABASE :name'+
' ON ( NAME = :datdev,FILENAME = :devdat,'+
'SIZE = 10) '+
' LOG ON ( NAME = :datlog,FILENAME = :devlog,'+
'SIZE = 5)');
parameters.ParamByName('name').Value := data;
parameters.ParamByName('datdev').Value := data+'_dat';
parameters.ParamByName('devdat').Value := devdat+'/'+data+'_dat.mdf';
parameters.ParamByName('datlog').Value := data+'_log';
parameters.ParamByName('devlog').Value := devlog+'/'+data+'_log.ldf';
try
execsql;
except
showmessage('创建数据库失败,请与管理员联系!');
// result := false; +
exit;
end;
怎么修改?
 
SQL.Add(' Create database ' + DBName);
 
为什么不能使用动态的参数呢?
 
{动态创建数据库}
with AdoQuery1 do begin
Close;
SQL.Clear;
SQL.Add('Create Database MyDB');
SQL.Add('On Primary');
SQL.Add('(Name=MyDB_Data,FileName='''+FileDir+'MyDB_Data.MDF'')');
SQL.Add('Log On');
SQL.Add('(Name=MyDB_Log,FileName='''+FileDir+'MyDB_Log.LDF'')');
Prepared; ExecSQL;
end;

{生成数据库表}

with AdoQuery1 do begin
Close; SQL.Clear;
SQL.Add('Create Table Table1(col1 Char(10) Not NULL Primary Key)');
Prepared; ExecSQL;
end;
 
只有一些常量可以用动态参数,
表名,字段名等不能用动态参数。
 
拼字窜,exec(字符窜)

procedure TForm1.Button1Click(Sender: TObject);
var
vsql:string;
data:string;
begin
data:='aa';
vsql:='CREATE DATABASE '+Data;//把所有项加全
with adoquery1 do
begin
close;
sql.clear;
sql.add('Exec('''+vSql+''''+')');
execsql;
end;


end;
 
谢谢各位,尤其是jiangxiancheng
 
呵呵,一般只有插入或者查询值可以用参数。其它的不可以的。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
791
DelphiTeacher的专栏
D
顶部