Delphi7中的多行参数TAdoQuery

时间:2013-04-16 08:20:55

标签: delphi parameter-passing ado tadoquery

使用Delphi 7和SQL Server 2005,我试图将多行参数(Stringlist.text)传递给TAdoQuery插入脚本。 插入是成功的,但是当我从字段中取回数据时,我接受

Line 1  Line 2  Line 3

而不是

Line 1  
Line 2  
Line 3

表中的字段类型是nvarchar(MAX),我不能将其更改为任何其他类型,表不是我的。我试图将参数类型从widestring更改为ftMemo,但没有任何变化。 有什么想法吗?

var
  QRDestLicenze: TADOQuery;
  LsLic := TStringList;

begin
  LsLic := TStringList.Create;
  LsLic.Add('Line 1');
  LsLic.Add('Line 2');
  LsLic.Add('Line 3');
  QRDestLic.Parameters.FindParam('FieldName).Value := LsLic.Text;
  QRDestLic.ExecSQL;
end;

1 个答案:

答案 0 :(得分:0)

尽管使用了Delphi 6和SQL Server 2008,我创建了一个完全相同的演示。

  Memo1.Lines.Clear;
  Memo1.Lines.Add('Line 1');
  Memo1.Lines.Add('Line 2');
  Memo1.Lines.Add('Line 3');

  ADOQuery1.SQL.Text := 'INSERT INTO Absences '+
    '(Employee, Date_from, Notes) '+
    'VALUES (99999, ''16/04/2013'', :sNotes)';
  ADOQuery1.Parameters.ParamValues['sNotes'] := Memo1.Lines.Text;
  ADOQuery1.ExecSQL;

  ADOQuery1.SQL.Text := 'SELECT Notes FROM Absences '+
    'WHERE Employee = 99999';
  ADOQuery1.Open;
  Memo2.Lines.Text := ADOQuery1.FieldByName('Absence_notes').AsString;

这按预期工作,显示:

Line 1
Line 2
Line 3
两个备忘录中的

“Notes”字段的类型为VARCHAR(Max)。

我将参数类型保留为默认值(ftString),并且在TADOConnection或TADOQuery上没有更改其他默认设置。

我使用“Microsoft OLE DB Provider for SQL Server”作为ADO数据链接提供程序。

我们可能会尝试重现您的问题吗?

相关问题