使用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;
答案 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数据链接提供程序。
我们可能会尝试重现您的问题吗?