CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  数据库(包含打印,安装,报表)

能不能直接用SQL语句Insert into插入OLE对象类型(二进制数据)的字段数据?

楼主sxslyy(孤松傲雪)2006-03-09 16:30:20 在 VB / 数据库(包含打印,安装,报表) 提问

不用流,也不用.AppendChunk,直接用SQL语句可不可以!如可以怎么用! 问题点数:50、回复次数:8Top

1 楼Modest(塞北雪貂)·(偶最欣赏楼主的分)回复于 2006-03-09 16:42:48 得分 0

数据量小的话可以直接转换成文本后插入Top

2 楼sxslyy(孤松傲雪)回复于 2006-03-09 16:51:10 得分 0

要插入的是图片,如需要转换,将如何转换呀!Top

3 楼Modest(塞北雪貂)·(偶最欣赏楼主的分)回复于 2006-03-09 18:50:15 得分 0

转换的方法很多,比如BASE64。  
  但是这样得不偿失,性能下降很多。Top

4 楼province_(雍昊)回复于 2006-03-09 18:55:26 得分 10

否则开发商为什么要提供STREAM对象,APPENDCHUNK方法呢?Top

5 楼faysky2(出来混,迟早是要还嘀)回复于 2006-03-09 18:56:52 得分 20

不用流,也不用.AppendChunk  
  ------------------------------  
  那就用二进制方式来读写文件,请参考(把文件(包括图片)存入数据库):  
   
  Dim   cn   As   New   ADODB.Connection,rs   As   New   ADODB.Recordset  
  Private   Sub   Form_Load()  
          cn.CursorLocation   =   adUseClient  
          '这里给的是sql库的连接,具体的数据库连接请自己改过来,如果是Access库,只改数据库的连接即可  
          cn.Open   "Provider=SQLOLEDB.1;Password=;Persist   Security   Info=False;User   ID=sa;Initial   Catalog=Test;Data   Source=ljx"  
  End   Sub  
   
  Private   Sub   cmdSaveFile_Click()  
          saveFile   App.Path   &   "\temp.jpg"  
  End   Sub  
   
  Private   Sub   cmdReadFile_Click()  
          readFile   App.Path   &   "\temp1.jpg"  
  End   Sub  
   
  '保存文件到数据库  
  Private   Sub   saveFile(Byval   strFile   As   String)  
          Dim   tmp()   As   Byte  
          Dim   lngFile   As   Long  
          If   rs.State=adStateOpen   Then   rs.Close  
          rs.Open   "select   *   from   test   where   1<>1",   cn,   adOpenDynamic,   adLockOptimistic  
           
          lngFile   =   FreeFile  
          Open   strFile   For   Binary   As   #lngFile  
          ReDim   tmp(LOF(lngFile))  
          Get   #lngFile,   ,   tmp  
          Close   #lngFile  
          rs.AddNew  
          rs.Fields("ID").Value="001"  
          rs.Fields("pic").Value   =   tmp  
          rs.Update  
  End   Sub  
   
  '读取数据库的文件,保存到硬盘  
  Private   Sub   readFile(Byval   strFile   As   String)  
          Dim   tmp()   As   Byte  
          If   rs.State=adStateOpen   Then   rs.Close  
          rs.Open   "select   *   from   test   where   [ID]='001'",   cn  
          ReDim   tmp(rs.Fields(0).ActualSize)                                           '返回2进制文件的字节长度  
          tmp   =   rs.Fields("pic").Value  
          Open   strFile   For   Binary   As   #1  
          Put   #1,   ,   tmp  
          Close   #1  
  End   Sub  
   
  Private   Sub   Form_Unload(Cancel   As   Integer)  
          If   rs.State<>adStateClosed   Then   rs.Close  
          If   cn.State<>adStateClosed   Then   cn.Close  
          Set   rs   =   Nothing  
          Set   cn=Nothing  
  End   Sub  
  Top

6 楼sxslyy(孤松傲雪)回复于 2006-03-10 09:06:35 得分 0

最想知道的是如不转换能不能用SQL语句直接操作,如Insert   into或updateTop

7 楼Modest(塞北雪貂)·(偶最欣赏楼主的分)回复于 2006-03-10 09:22:39 得分 20

SQL语句本身是字符串,并且有长度限制。  
  如果你非要用SQL语句的话,必须保证你的值也是字符串,并且在SQL规定的长度之内。  
  这些你做到了,那么就能如你所愿。Top

8 楼sxslyy(孤松傲雪)回复于 2006-03-10 10:40:49 得分 0

喔!是这样呀!谢谢楼上的兄弟!Top

相关问题

  • 如何用SQL语句实现二进制文件的存储?
  • 关于二进制字段
  • 如何用SQL语句插入binary类型的二进制数据流
  • 如何操作二进制字段????
  • 怎样把Stream和Xml中的二进制数据存入SQL Server中的image字段中
  • c#中提交二进制数据到binary型字段时(sql server2000),总报告错误说会被截断
  • 不能把图片或其它二进制数据放入Sql Server的Image字段
  • 一个SQL语句的字段问题
  • 请教设置字段的SQL语句
  • 更改字段顺序 SQL 语句

关键词

  • 语句
  • 数据
  • 数据库
  • 转换
  • 文件
  • 连接
  • sql
  • lngfile
  • 插入
  • rs

得分解答快速导航

  • 帖主:sxslyy
  • province_
  • faysky2
  • Modest

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

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