怎样在表中添加大文本数据列?
我想要在某个列的每个字段中输入几千字的大文本,如果不行还可以用什么方法?
1选择什么数据类型?
2怎样在表中输入数据?
3怎样通过数据窗口显示大文本?
问题点数:0、回复次数:7Top
1 楼zhouweiwansui(彪悍的论点不需要解释)回复于 2003-04-04 00:03:16 得分 0
存成文本文档,写进blob变量存进数据库
用updateblob,具体自己查帮助
Top
2 楼xirumin(吃好喝好)回复于 2003-04-04 08:08:13 得分 0
只要在4k以下,可以是varchar型的字段(sql-server支持8k以下), 但pb的直连接口只支持255, odbc可到4k
另外,定义成text型的字段操作与varchar型相似, 也是一种选择Top
3 楼coolingpipe(冷箫轻笛)回复于 2003-04-04 11:26:38 得分 0
???
用的什么数据库啊?是SQL anywhere吗?Top
4 楼dejkstro(立刻死臭)回复于 2003-04-04 11:52:42 得分 0
1.选择 blob
2.UPDATEBLOB
3.用一个控件(建议用微软的 Rich Textbox Control,pb 的太次)来完成显示Top
5 楼redfox33(豆子)回复于 2003-04-04 17:10:02 得分 0
我的数据库是Sybase11.01
我用text类型保存大文本字段。(anywhere数据库可以用 long binary)
用rich text edit显示从数据库中读取的大文本。
我的代码如下。
注:
表 software_version 结构如下
字段名 类型
upgrade_txt text类型字段(blod)
sw_verxh int型(ID)
//*************w_upgradesql窗体代码如下*************
//*******w_upgradesql 窗体实例变量*******
string is_update //大文本列的内容
//**********************
//从数据库中读取大文本列的内容,然后将其放入RTE控制中
blob lbb_temp
long ll_i
w_upgradesql.is_update=string("")
//查询大文本列的内容
selectblob upgrade_txt into:lbb_temp from software_version
where sw_verxh=:xh;
if sqlca.sqlcode<>0 then
messagebox("提示信息",sqlca.sqlerrtext)
return
end if
//********************//
//设置大文本的内容到窗口w_rte_blob上的RTE控制rte_editor中
is_update=string(lbb_temp)
rte_editor.SelectTextAll()
rte_editor.clear()
ll_i=rte_editor.PasteRtf(is_update)
if ll_i=-1 then
rte_editor.ReplaceText(is_update)
end if
//*************w_upgradesql窗体代码结束*************
w_upgradesql窗体上还有一个菜单,用来执行从txt文件中装入大文本和
将大文本导入txt文件中以及保存大文本至数据库的功能。
//*******************************
读取文件功能:
//读取文件
integer li_return,li_pos
string ls_pathname,ls_filename,ls_extension
li_return=GetFileOpenName("文件读取",ls_pathname,ls_filename,"TXT","Text Files (*.TXT),*.TXT,Rich Text Files (*.RTF),*.RTF")
if li_return=1 then
//获取文件扩展名
ls_filename=lower(ls_filename)
li_pos=pos(ls_filename,'.')
ls_extension=mid(ls_filename,li_pos+1,3)
choose case ls_extension
case "txt"
w_upgradesql.rte_editor.InsertDocument(ls_pathname,true,FileTypeText!)
case "rtf"
w_upgradesql.rte_editor.InsertDocument(ls_pathname,true,FileTypeRichText!)
case else
messagebox("提示信息","请选择TXT或RTF文件")
end choose
end if
//*******************
导出文件功能:
//将文本内容保存到文件中
integer li_rtn,li_return,li_pos
string ls_pathname,ls_filename,ls_extension
li_return=GetFileSaveName("文件保存",ls_pathname,ls_filename,"TXT","Text Files(*.TXT),*.TXT,Rich Text Files(*.rtf),*.rtf")
if li_return=1 then
//获取文件扩展名
ls_filename=lower(ls_filename)
li_pos=pos(ls_filename,'.')
ls_extension=mid(ls_filename,li_pos+1,3)
choose case ls_extension
case "txt"
li_rtn=w_upgradesql.rte_editor.SaveDocument(ls_pathname,FileTypeText!)
case "rtf"
li_rtn=w_upgradesql.rte_editor.SaveDocument(ls_pathname,FileTypeRichText!)
case else
messagebox("提示信息","请选择TXT或RTF文件")
end choose
end if
//**************
保存到数据库功能:
//提交
//将编辑结果保存到表中的大文本列中
blob lbb_update
string ls_temp
ls_temp=w_upgradesql.rte_editor.CopyRtf(false)
lbb_update=blob(ls_temp)
updateblob software_version set upgrade_txt=:lbb_update
where sw_verxh=:w_upgradesql.xh;
if sqlca.sqlcode<>0 then
messagebox("提示信息",sqlca.sqlerrtext)
rollback;
else
commit;
end if
Top
6 楼zzclhcbmail(笑傲糨糊)回复于 2003-04-04 17:24:13 得分 0
用text类型即可Top
7 楼coolingpipe(冷箫轻笛)回复于 2003-04-04 17:30:31 得分 0
问题不明确,如果用的是SQL SERVER则用TEXT类型,也可以用NTEXT类型Top




