拼吾爱程序人生

首页 » 数据库编程 » SQL » 如何将图片存到数据库中?
Systemjudge - 2007-8-6 16:59:00
如果你用的是sql server数据库!你不想用后台操作你可以看看这个
下面是对text的操作你可以看看
1. 写操作(WRITETEXT)
这里一般要用到的函数有TextPtr获得文本字段的指针,和TextVaild检验指针的有效性,@@RowCount判断返回记录的条数。
 
   
   
   
 
 
   
   
     
       
         
       
     
     
   
 
 
   
   
   
 

其基本方法是:用Textptr函数得到指针,判断其有效性,用Writetext写数据
函数说明:Textptr(字段名)。Writetext  tablename。Fieldname  @textptr(指针) [With Log]  data(数据)
例如:
Begin Tran
Declare  @Mytextptr  VarBinary(16) 
Select  @mytextptr=textptr(pr_info)
From  Pub_Info (updlock)
Where  pud_id=’9999’
IF  @Mytextptr Is Not Null
Writetext  pub_info.pr_info  @mytextptr  with log  ‘data’
Commit  Tran
2. 读操作
常用函数
PatIndex(‘%exp%’,var|fieldname。。)
Datalength()
@@TextSize 文本大小
SettextSize  N 设置文本大小
ReadText  {TableName。FieldName}  {@textptr}  Offet  Size  [HoldLock]
例如:
begin tran
Declare  @mytextptr  Varbinary(16),@Totalsize  int,@Readsize  int,@lastread  int
Set textsize 100
Select  @mytextptr=textptr(pr_info), @totalsize=datalength(pr_info)
@lastread=0,
@readsize= case  when  (textsize<datalength(pr_info) then  textsize
eles datalength(pr_info)
end
From  Pub_info
Where  Pub_id=’1622’
IF  @mytextptr Is  not Null  and @readsize>0
While (@lastread<@totalsize)
ReadText  pub_info.pr_info  @mytextptr  @lastread  @readsize  holdlock
If (@@error<>0)
  Break
Select @lastread=@lastread @readsize
If ((@readsize @lastread)>@totalsize)
Select @readsize=@totalsize-@lastread
End
Commit  Tran
3.数据更新UpdateText
更新数据代替了写操作,其基本语法是:
UpdateText  Table_Name.Col_Name  Text_Ptr  Offest(偏移量)  Deleted_Length
[With Log] [Inserted_Data|Table_Name.Scr_Column_name  Str_Text_Ptr]
说明:
Offest:0说明从开头开始,Null表示你向当前内容追加数据。
Deleted_Length:0表示不删除任何内容,Null表示删除所有内容。
例如1(完全代替):
Declare  @mytextptr varbinary(16)
Begin tran
Select  @mytextptr=textptr(pr_infro)  from  pub_info(uplock)  where  pub_id=’9999’
If  @mytextptr is not null
Updatetext  pub_info.pr_infro  @mytextptr  0  null  with  log  “you are right”
Commit
例如2:
declare  @mytextptr  varbinary(16) ,@offest  int
Begin  tran
Select @mytextptr=textptr(pr_infro),@offest=patindex(‘%D.C%’,pr_infro)-1 4
/*减一是因为有一个矫正的偏移量,加4是因为D.C.是4*/
from  pub_info(unlock)  where  pub_id=’0877’
If  @mytextptr is  not  null  and  @offest>=0
  Updatetext  pub_info.pr_infro  @mytextptr  @offest  null  with  log
Commit  tran
例如3:
文本追加的问题
将出版商pub_id=9952的内容追加到出版商Pub_id=0877d的文本中。
Delcare  @source_textptr  varbinary(16),@target_textptr  varbinary(16)
Begin  tran
Select  @source_textptr=textptr(pr_infro)  from  pub_info(uplock)  where  pub_id=’0877’
Select  @target_textptr=textptr(pr_infro)  from  pub_info(uplock)  where  pub_id=’9952’
If  @source_textptr Is not null  and  @target  I s  not null
Updatetext  pub_info.pr_infro  @target_textptr  null  null 
with  log  pub_info.pr_infro  @source_textptr

 您可能对 [SQL] 的这些文章也感兴趣:

批量更改数据库对象所有者nf_ChangeObjectOwner
SQL字符串函数
优化数据库前,问自己10个问题
网络SQL入侵与防范高级篇
使用ODC文档在IE中直接连接SQL数据库
将表数据生成SQL脚本的存储过程
利用MSSQL sp自制未公开的加密函数
启动SQL SERVER时自动执行存储过程
存储过程编写经验和优化措施
利用SQL移动硬盘文件
SQL语言入门教程:第五课 删除数据库表格
Sql语句密码验证的安全漏洞
1
查看完整版本: 如何将图片存到数据库中?
Modify by pin5i DZNT_ExpandPackage 2.1.3295 2007-2009 pin5i.com
 Total Unique Visitors: