CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  基础类

高分求助!怎样把图片控件用jpg格式插入数据库!

楼主JackY_Pend(JackY)2005-08-02 10:43:33 在 PowerBuilder / 基础类 提问

我用的是access数据库,请问在access里面插入图片保存的格式是哪种格式,而在PB里,怎样用代码插入!问题解决,立刻散分,Thank! 问题点数:80、回复次数:6Top

1 楼rodgerwu()回复于 2005-08-02 10:54:15 得分 0

blob   {270000}bmp_photo  
  blob   b_get_empty_photo  
  LONG   V_FILEHANDLE,V_LENOFREAD  
  STRING   V_HPHM,V_FILE_PATH,V_FILE_NAME  
  BLOB   V_PHOTO,V_READED_PHOTO  
  BLOB   {750000}V_PHOTO_BMP  
  INTEGER   I  
  long   temp_var  
   
  p_1.visible=true  
   
  //打开照片文件  
  V_FILEHANDLE   =   GetFileOpenName("选择相片文件",     &  
  +   V_FILE_PATH,   V_FILE_NAME,   "JPG",   &  
  +   "压缩图象文件   (*.JPG),*.JPG")  
   
  IF   V_FILEHANDLE=1   THEN  
  IF   Lower(Right(V_FILE_NAME,3))   =   'jpg'   THEN  
  IF   FileLength(V_FILE_NAME   )     >   500   *   1000   Then  
  MessageBox("操作提示:","您选择的图片文件太大,不能存储!")   ;  
  FileClose(   V_FILEHANDLE   )   ;  
  return  
  ELSE         //READ   PICTURE   FILE  
  V_FILEHANDLE   =   fileOpen(V_FILE_NAME,streamMode!)  
  DO             //READ   PICTURE   FILE   TO   BLOB  
  V_READED_PHOTO   =   Blob(   ""   )   ;  
  V_LENOFREAD   =   FileRead(V_FILEHANDLE,V_READED_PHOTO)   ;  
  temp_var   =   temp_var   +   V_LENOFREAD  
  V_PHOTO=   V_PHOTO   +   V_READED_PHOTO;  
  LOOP   UNTIL   V_LENOFREAD=-100  
  V_PHOTO_BMP   =   V_PHOTO        
   
  p_1.SETPICTURE(V_PHOTO_BMP)  
  b_get_empty_photo=V_PHOTO           //JPG格式  
  End   If  
  ELSE  
  MESSAGEBOX("图形格式出错:","请选择JPG图形文件格式!")  
  FileClose(   V_FILEHANDLE   )   ;  
  return  
  END   IF  
  END   IF  
   
  FileClose(   V_FILEHANDLE   )   ;  
   
  string   ls_lsh,ls_xh  
  ls_xh=dw_1.getitemstring(dw_1.getrow(),"xh")  
  ls_lsh=dw_1.getitemstring(dw_1.getrow(),"lsh")  
  int   li_count    
  select   Count(*)   into   :li_count   from   t_temp_jszp   where   lsh   =   :ls_lsh;  
  IF   li_count   =   0   Then  
  INSERT   INTO   "T_TEMP_JSZP"      
  (   "LSH","XSKH","XH","ZP"   )      
  VALUES   (   :ls_lsh,'',:ls_xh,''   )     ;  
   
  updateblob   t_temp_jszp   SET   zp   =   :b_get_empty_photo      
  WHERE   lsh=:ls_lsh   ;  
  Else  
  updateblob   t_temp_jszp   SET   zp   =   :b_get_empty_photo      
        WHERE   lsh=:ls_lsh   ;  
  End   IfTop

2 楼chj7942(趴在键盘上晒太阳的猫)回复于 2005-08-02 10:56:20 得分 0

image   (image   数据类型:在   Access   项目中,一种长度可变的数据类型,最多可存储   2^31   -1   (2,147,483,647)   字节的二进制数据。image   数据类型用来存储   BLOB(二进制大对象),如图片、文档、声音和已编译代码。)Top

3 楼balloonman2002()回复于 2005-08-02 10:57:54 得分 0

ACCESS可以用“备注”型字段,具体存取方法参考:  
  http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=201309  
  http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=204439Top

4 楼dalianyilan(嘘嘘兔)回复于 2005-08-02 11:29:20 得分 0

参考一下:  
   
  long   ll_filelen  
  int   li_filenum,li_loops,li_counter  
  blob   lb_read,lb_picture  
  string   ls_photofile='aaa.jpg',ls_no  
  ls_no=dw_1.getitemstring(dw_1.getrow(),'no')//取编号  
  ll_filelen=filelength(ls_photofile)  
  li_filenum=fileopen(ls_photofile,streammode!,read!,lockread!)  
   
  if   ll_filelen   >   32765   then  
  li_loops=((ll_filelen   -   1)/32675)+1  
  else  
  li_loops=1  
  end   if  
   
  for   li_counter=1   to   li_loops  
  fileread(li_filenum,lb_read)  
  lb_picture=lb_picture+lb_read  
  next  
  fileclose(li_filenum)  
   
   
   
  sqlca.autocommit=true  
  updateblob   t_health  
  set   picture=:lb_picture  
  where   no   =   :ls_no;//保存图片  
  if   sqlca.sqlnrows>0   then  
  commit;  
                                      else  
                                                          rolback;  
                                        end   ifTop

5 楼dalianyilan(嘘嘘兔)回复于 2005-08-02 11:30:47 得分 0

参考一下:  
   
  long   ll_filelen  
  int   li_filenum,li_loops,li_counter  
  blob   lb_read,lb_picture  
  string   ls_photofile='aaa.jpg',ls_no  
  ls_no=dw_1.getitemstring(dw_1.getrow(),'no')//取编号  
  ll_filelen=filelength(ls_photofile)  
  li_filenum=fileopen(ls_photofile,streammode!,read!,lockread!)  
   
  if   ll_filelen   >   32765   then  
  li_loops=((ll_filelen   -   1)/32675)+1  
  else  
  li_loops=1  
  end   if  
   
  for   li_counter=1   to   li_loops  
  fileread(li_filenum,lb_read)  
  lb_picture=lb_picture+lb_read  
  next  
  fileclose(li_filenum)  
   
   
   
  sqlca.autocommit=true  
  updateblob   t_health  
  set   picture=:lb_picture  
  where   no   =   :ls_no;//保存图片  
  if   sqlca.sqlnrows>0   then  
  commit;  
                                      else  
                                                          rolback;  
                                        end   ifTop

6 楼sun1976(嫁给我,你就是我的一妾)回复于 2005-08-02 14:53:23 得分 0

建议应用程序主路径建立一个专用文件夹,比如pic  
  而数据库中存放文件名称  
  打开的时候文件名称列拼出全路径,选中showaspicture  
  Top

相关问题

  • 怎么在c#中的向SQL数据库插入控件中的值
  • 数据库编辑控件
  • 数据库控件问题
  • 用data控件连接DBf数据库时为什么出现“找不到可插入的ISAM”错误?
  • 如何从edit控件中得到值并用Insert语句插入到SQLSERVER数据库中去
  • paradox 数据库为什么无法插入数值型数据?控件的问题么?
  • 数据库插入问题
  • 数据库插入问题??????
  • 数据库插入问题??
  • 数据库插入问题!!!

关键词

  • .net
  • 文件
  • photofile
  • 插入
  • li
  • filenum
  • filehandle
  • photo
  • 格式
  • jpg

得分解答快速导航

  • 帖主:JackY_Pend

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo