delphi7怎么存取sql2000中text类型的值

aidpoint20126 2014-01-26 03:58:22
取值没有问题问题,q.fieldbyname('xdd').asstring就可以取出来了,
但是插入时就不行了,老是会自动切断
q.sql.text:='insert into tablea(xdd) values('''+str+''')'
如果str长度超过了256就自动切断为256,咋个办呢
...全文
252 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
aawwmate 2014-01-29
  • 打赏
  • 举报
回复
自动切断,检查下你别的地方吧,数据库不需要特殊的操作
孤独de猫 2014-01-28
  • 打赏
  • 举报
回复
奇怪了,我并没有出现此问题呀。 测试环境: 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;
xushaoke 2014-01-27
  • 打赏
  • 举报
回复
保存到memorystream里,然后再读取内存流就可以了。
acmsong 2014-01-26
  • 打赏
  • 举报
回复
引用 2 楼 aidpoint20126 的回复:
不行啊,楼上的兄弟 q.Close; q.sql.text:='insert into FOXHIS_MSG_SEND(XML) values(:str)'; q.ParamByName('str').LoadFromStream(xmlstream,ftmemo); q.ExecSQL; 还是一样的效果
引用 2 楼 aidpoint20126 的回复:
不行啊,楼上的兄弟 q.Close; q.sql.text:='insert into FOXHIS_MSG_SEND(XML) values(:str)'; q.ParamByName('str').LoadFromStream(xmlstream,ftmemo); q.ExecSQL; 还是一样的效果
str是用WideString么
aidpoint20126 2014-01-26
  • 打赏
  • 举报
回复
不行啊,楼上的兄弟 q.Close; q.sql.text:='insert into FOXHIS_MSG_SEND(XML) values(:str)'; q.ParamByName('str').LoadFromStream(xmlstream,ftmemo); q.ExecSQL; 还是一样的效果
acmsong 2014-01-26
  • 打赏
  • 举报
回复
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; 纯手写,如果有语法错误请自行更正

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧