| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1383 人关注过本帖
标题:关于SQL数据库图片更改后不能存盘的问题
取消只看楼主 加入收藏
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
结帖率:88.52%
收藏
已结贴  问题点数:20 回复次数:7 
关于SQL数据库图片更改后不能存盘的问题
在SQL数据库建立表shebei,字段PIC 数据类型是TEXT.程序如下:
程序代码:
LOCAL xfilename,xfiletext
xfilename = GETFILE('DOCX,XLSX,jpg')
xfiletext = strconv(FILETOSTR(xfilename),13)
SELECT shebei_one   &&本地临时表shebei_one是从shebei表的一个查询结果,编辑完后保存到远程表shebei
replace pic WITH xfiletext  && pic字段是SQL的TEXT类型

SELECT shebei_one
lcTextString=xfiletext
Thisform.pf.page1.Image1.Stretch = 2
Thisform.pf.page1.Image1.PictureVal=Strconv(lcTextString,14)

&&后面的程序是保存到远程表SHEBEI,因为使用的通用程序,省略。


问题是这样的,当shebei_one添加记录,执行以上程序后,再使用spt的方式INSERT,保存成功,但是如果编辑shebei_one表,再使用spt的方式UPDATE,保存失败,这是
怎么回事呢?
搜索更多相关主题的帖子: SQL 更改 数据库 保存 图片 
2022-02-17 11:06
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
问题可能在别的哪个环节,我直接用以下程序,保存成功
程序代码:
LOCAL xfilename,xfiletext
xfilename = GETFILE('DOCX,XLSX,jpg')
xfiletext = strconv(FILETOSTR(xfilename),13)




 字符串=["select * from shebei where id=2","shebei_one1"]

 连接临时_yk()   &&调用远程连接

 Ac=SQLEXEC(nhandle,&字符串)

 IF  Ac<0
       =SQLDISCONNECT(nhandle)
       MESSAGEBOX("读取错误!",0,"错误信息")
     
       RETURN TO MASTER 

 ELSE
    SELECT shebei_one1
   
     Ac2=SQLEXEC(nhandle,"update shebei set pic=?xfiletext ")
     IF ac2>0
        =MESSAGEBOX("保存成功")
     else 
        =MESSAGEBOX("保存失败")
     endif     
      =SQLDISCONNECT(nhandle)

 endif  
2022-02-18 06:59
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
但是我采用另外的方式就不能成功
程序代码:
字符串=["select * from shebei where id=2","shebei_one"]
连接临时_yk()   &&调用远程连接

 Ac=SQLEXEC(nhandle,&字符串)

 IF  Ac<0
       =SQLDISCONNECT(nhandle)
       MESSAGEBOX("读取错误!",0,"错误信息")
     
       RETURN TO MASTER 

 ELSE
    

 endif  

ac1=SQLEXEC(nhandle,"select * from shebei ","c_t")  && 产生表 
IF  ac1<0 
      = SQLDISCONNECT(nhandle)
      MESSAGEBOX("读取数据错误!",0,"错误信息") 
      RETURN TO MASTER 
ELSE
    SELECT c_t
    CURSORSETPROP("tables","shebei","c_t")
    CURSORSETPROP("keyfieldlist","id","c_t")
    CURSORSETPROP("updatablefieldlist","id,pic","c_t")
    yy='id shebei.id,pic shebei.pic'
    CURSORSETPROP("updatenamelist",yy,"c_t")
    CURSORSETPROP("sendupdate",.t.,"c_t")
    CURSORSETPROP("wheretype",2)
    cursorsetprop("buffering",5)  &&设置表缓冲
    UPDATE c_t SET pic=shebei_one.pic from shebei_one WHERE c_t.id= shebei_one.id 
    SQLSetprop(nhandle,'Transactions',2)        && 开启远程手工事务
    BEGIN TRANSACTION
        select c_t
        a1=TABLEUPDATE(.t.)
        IF a1=.t. 
         END TRANSACTION  
        ELSE
            rollback  
        ENDIF
   
    SQLSetprop(nhandle,'Transactions',1)        && 开启远程自动事务
    = SQLDISCONNECT(nhandle) &&关闭
    IF a1=.t.
       MESSAGEBOX("数据保存成功!",0,"信息") 
    ELSE
       MESSAGEBOX("数据保存失败!",0,"信息") 
    endif 
    
  
ENDIF  &&数据查询

 


运行完成显示:数据保存失败! 这是怎么回事呢?
2022-02-18 07:45
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
不是的,假如把PIC换成别的字段,就不会出现保存失败,
或者不使用这一句: UPDATE c_t SET pic=shebei_one.pic from shebei_one WHERE c_t.id= shebei_one.id ,也能保存成功
您说问题就是“VFP与SQL中,保存图片的字段”中存在冲突,那怎么解决呢


[此贴子已经被作者于2022-2-18 18:58编辑过]

2022-02-18 18:44
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
为什么用=SQLEXEC(nhandle,"update shebei set pic=?mypic ")就不会出现问题呢?
2022-02-18 19:00
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
还有,当PIC的值是NULL时,保存也会成功
2022-02-19 11:48
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
保存失败的原因终于找到了:把CURSORSETPROP("wheretype",2,"c_t")改成CURSORSETPROP("wheretype",1,"c_t"),立刻就解决了
2022-02-19 11:56
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
表可能有问题,原来pic用TEXT数据类型,添加图片后,居然在SQL服务器内不能删除记录,后改成VCHAR(MAX),才没有问题了
2022-02-21 12:15
快速回复:关于SQL数据库图片更改后不能存盘的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033832 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved