begin
ss := TStringStream.Create(str);
with q do
begin
  Close;
  SQL.Text := 'insert into tablea(xdd) values(:p)';
  Parameters.ParamByName('p').LoadFromStream(ss, ftMemo);
  ExecSQL;
end;
end;纯手写,如果有语法错误请自行更正

解决方案 »

  1.   

    不行啊,楼上的兄弟
    q.Close;
    q.sql.text:='insert into FOXHIS_MSG_SEND(XML) values(:str)';
     q.ParamByName('str').LoadFromStream(xmlstream,ftmemo);
     q.ExecSQL;
    还是一样的效果
      

  2.   

    保存到memorystream里,然后再读取内存流就可以了。
      

  3.   

    奇怪了,我并没有出现此问题呀。
    测试环境: SQL Server 2005 + D2010
    表结构如下:CREATE TABLE [dbo].[Test](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [data] [text] NULL
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]Delphi 代码如下:{
    控件:
        con1: TADOConnection;
        qry1: TADOQuery;
        btn1: TButton;
    }
    uses StrUtils;var
      strData: string;
    begin
      strData := 'Hello world';
      strData := DupeString(strData, 10000); //将strData 重复1000遍。
      with qry1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('INSERT INTO Test ([data])VALUES('''+ strData +''')');  //插入数据
        Prepared;
        ExecSQL;
      end;
    end;