procedure TcreateZtFrm.LbButton1Click(Sender: TObject);
var
str1:string;
beginstr1:='create database  '+trim(edit4.Text);
adoquery2.SQL.Clear;
adoquery2.SQL.Add(str1);
adoquery2.SQL.Add('  on  primary');
adoquery2.SQL.Add('(');
adoquery2.SQL.Add('name=:name1,');
adoquery2.SQL.Add('filename=:filename1,');
adoquery2.SQL.Add('size=10MB, ');
adoquery2.SQL.Add('filegrowth=10% ');
adoquery2.SQL.Add(' ) ');
adoquery2.SQL.Add('   ');
adoquery2.SQL.Add('log on');
adoquery2.SQL.Add('(');
adoquery2.SQL.Add('name=:name2,');
adoquery2.SQL.Add('filename=:filename2,');
adoquery2.SQL.Add('size=1MB, ');
adoquery2.SQL.Add('filegrowth=1% ');
adoquery2.SQL.Add(' ) ');
adoquery2.Parameters[0].Value:=trim(edit4.Text)+'_data,';
adoquery2.Parameters[1].Value:='d:\'+trim(edit4.Text)+'_data.mdf';
adoquery2.Parameters[2].Value:=trim(edit4.Text)+'_log';
adoquery2.Parameters[3].Value:='d:\'+trim(edit4.Text)+'_log.ldf';
adoquery2.ParamCheck:=true;
adoquery2.ExecSQL;以上的语句运行时总是会出现参数不对的提示,我知道这是字符串传递出现问题,
但调试多次仍无法解决,请高手指点。

解决方案 »

  1.   

    adoquery2.ExecSQL;之前现把SQL语句打印出来看看是不是满足要求
      

  2.   

    搂主这么写有点乱,很难看清楚
    可以考虑楼上两位的方式,在执行语句前,先show出来手工检查一下语法。
    另外,在sql中带单引号的,外面要用两个单引号。
    譬如:下面这句
    adoquery2.Parameters[1].Value:='d:\'+trim(edit4.Text)+'_data.mdf';
    应该改为:
    adoquery2.Parameters[1].Value:='''d:\'+trim(edit4.Text)+'_data.mdf''';