怎样复制image字段的数据到新表同样的字段里?

使用Gridview绑定数据库中的图片(Image字段) 注:此系列记录在我实际开发中遇到的问题和收藏一些技巧文章。 我们都知道,在Gridview中不能直接去绑定数据库中的图片,我们可以利用HttpHandler很容易的完成这个任务,在这我记录一下这个过程。1.上传图片存储到数据库中在数据库中创建一个,添加一下3个字段:步骤一:在Web页面中拖一个FileUpload 控件,一个文本框用于输入名称和提交上传按钮asp:Fil 阅读详情

             最近在写一个升级程序,其中要求将一个旧数据库里面的所有的照片都转到新数据库。暂且把旧数据库叫OldDB,新数据库叫NewDB,新数据库里面的字段为【Photo】,旧数据库叫【Picture】 。开始我是这样做的,先读出旧数据库里的数据,然后用insert into插入:

 

insert   into [  table1 ]   values (" & rs("Picture") & ")

 后来发现不行,我以为数据类型搞错了,改了下代码,如下:

 

insert   into [  table1 ]   values (‘" & rs("Picture") & "’)

多加了一对单引号,系统还是提示错误。我没有办法了,立即到CSDN上找到了两条存储过程。

 

if   exists  ( select   *   from  dbo.sysobjects  where  id  =   object_id (N ' [dbo].[sp_textcopy] ' and   OBJECTPROPERTY (id, N ' IsProcedure ' =   1 )
drop   procedure   [ dbo ] . [ sp_textcopy ]
GO

SET  QUOTED_IDENTIFIER  OFF  
GO
SET  ANSI_NULLS  OFF  
GO

CREATE   PROCEDURE  sp_textcopy (
  
@srvname      varchar  ( 30 ),
  
@login        varchar  ( 30 ),
  
@password      varchar  ( 30 ),
  
@dbname        varchar  ( 30 ),
  
@tbname        varchar  ( 30 ),
  
@colname      varchar  ( 30 ),
  
@filename      varchar  ( 30 ),
  
@whereclause   varchar  ( 40 ),
  
@direction    char ( 1 ))
AS
DECLARE   @exec_str   varchar  ( 255 )
SELECT   @exec_str   =
        
' textcopy /S  '   +   @srvname   +
        
'  /U  '   +   @login   +
        
'  /P  '   +   @password   +
        
'  /D  '   +   @dbname   +
        
'  /T  '   +   @tbname   +
        
'  /C  '   +   @colname   +
        
'  /W " '   +   @whereclause   +
        
' " /F  '   +   @filename   +
        
'  / '   +   @direction
EXEC  master..xp_cmdshell  @exec_str
GO
SET  QUOTED_IDENTIFIER  OFF  
GO
SET  ANSI_NULLS  ON  
GO

这是调用textcopy将图片数据导入和导出的语句,我原打算新旧数据库调用同一个存储过程,旧数据库先将数据导出到硬盘,新数据库在导入。在测试以后,发现不成功,页面显示不出数据,单独用textcopy测试还是可以导出数据的,但在程序中调用,没有成功。我接下来换成下面的存储过程:

 

if   exists  ( select   *   from  dbo.sysobjects  where  id  =   object_id (N ' [dbo].[sp_imageio] ' and   OBJECTPROPERTY (id, N ' IsProcedure ' =   1 )
drop   procedure   [ dbo ] . [ sp_imageio ]
GO

SET  QUOTED_IDENTIFIER  OFF  
GO
SET  ANSI_NULLS  OFF  
GO

Create     proc    p_binaryIO   
  
@servename     varchar    ( 30 ), -- 服务器名称   
   @username     varchar    ( 30 ),    -- 用户名   
   @password     varchar    ( 30 ),  -- 密码   
   @tbname     varchar    ( 500 ),    -- 数据库..表名   
   @fdname     varchar    ( 30 ),    -- 字段名   
   @fname     varchar    ( 1000 ),  -- 目录+文件名,处理过程中要使用/覆盖:@filename+_temp   
   @tj     varchar    ( 1000 ) = '' ,    -- 处理条件.对于数据导入,如果条件中包含@fdname,请指定表名前缀   
   @isout     bit = 1   -- 1导出((默认),0导入   
   AS      
  
declare     @fname_in     varchar ( 1000 -- bcp处理应答文件名   
  , @fsize     varchar ( 20 -- 要处理的文件的大小   
  , @m_tbname     varchar ( 50 -- 临时表名   
  , @sql     varchar ( 8000 )   
    
  
-- 则取得导入文件的大小   
   if     @isout = 1      
  
set     @fsize = ' 0 '    
  
else    
  
begin    
  
create     table    #tb(可选名    varchar ( 20 ),大小    int    
  ,创建日期   
varchar ( 10 ),创建时间    varchar ( 20 )   
  ,上次写操作日期   
varchar ( 10 ),上次写操作时间    varchar ( 20 )   
  ,上次访问日期   
varchar ( 10 ),上次访问时间    varchar ( 20 ),特性    int )   
  
insert     into    #tb   
  
exec    master..xp_getfiledetails    @fname    
  
select     @fsize = 大小    from    #tb   
  
drop     table    #tb   
  
if     @fsize     is     null    
  
begin    
  
print     ' 文件未找到 '    
  
return    
  
end    
    
  
end    
    
  
-- 生成数据处理应答文件   
   set     @m_tbname = ' [##temp ' + cast ( newid ()    as     varchar ( 40 )) + ' ] '    
  
set     @sql = ' select   *   into    ' + @m_tbname + '    from(   
  select   null   as   类型   
  union   all   select   0   as   前缀   
  union   all   select   
' + @fsize + '    as   长度   
  union   all   select   null   as   结束   
  union   all   select   null   as   格式   
  )   a
'    
  
exec ( @sql )   
  
select     @fname_in = @fname + ' _temp '    
  ,
@sql = ' bcp   " ' + @m_tbname + ' "   out   " ' + @fname_in    
  
+ ' "   /S" ' + @servename    
  
+ case     when     isnull ( @username , '' ) = ''     then     ''      
  
else     ' "   /U" ' + @username     end    
  
+ ' "   /P" ' + isnull ( @password , '' ) + ' "   /c '    
  
exec    master..xp_cmdshell    @sql    
  
-- 删除临时表   
   set     @sql = ' drop   table    ' + @m_tbname    
  
exec ( @sql )   
    
  
if     @isout = 1    
  
begin    
  
set     @sql = ' bcp   "select   top   1    ' + @fdname + '    from    '      
  
+ @tbname + case     isnull ( @tj , '' )    when     ''     then     ''    
  
else     '    where    ' + @tj     end    
  
+ ' "   queryout   " ' + @fname    
  
+ ' "   /S" ' + @servename    
  
+ case     when     isnull ( @username , '' ) = ''     then     ''      
  
else     ' "   /U" ' + @username     end    
  
+ ' "   /P" ' + isnull ( @password , '' )   
  
+ ' "   /i" ' + @fname_in + ' " '    
  
exec    master..xp_cmdshell    @sql    
  
end    
  
else    
  
begin    
  
-- 为数据导入准备临时表   
   set     @sql = ' select   top   0    ' + @fdname + '    into    '    
  
+ @m_tbname + '    from    '     + @tbname    
  
exec ( @sql )   
    
  
-- 将数据导入到临时表   
   set     @sql = ' bcp   " ' + @m_tbname + ' "   in   " ' + @fname    
  
+ ' "   /S" ' + @servename    
  
+ case     when     isnull ( @username , '' ) = ''     then     ''      
  
else     ' "   /U" ' + @username     end    
  
+ ' "   /P" ' + isnull ( @password , '' )   
  
+ ' "   /i" ' + @fname_in + ' " '    
  
exec    master..xp_cmdshell    @sql    
    
  
-- 将数据导入到正式表中   
   set     @sql = ' update    ' + @tbname    
  
+ '    set    ' + @fdname + ' =b. ' + @fdname    
  
+ '    from    ' + @tbname + '    a, '    
  
+ @m_tbname + '    b '    
  
+ case     isnull ( @tj , '' )    when     ''     then     ''    
  
else     '    where    ' + @tj     end    
  
exec ( @sql )   
    
  
-- 删除数据处理临时表   
   set     @sql = ' drop   table    ' + @m_tbname    
  
end    
    
  
-- 删除数据处理应答文件   
   set     @sql = ' del    ' + @fname_in    
  
exec    master..xp_cmdshell    @sql
GO
SET  QUOTED_IDENTIFIER  OFF  
GO
SET  ANSI_NULLS  ON  
GO

这个存储过程,基本原理其实和上面的是一样的。我先测试导出,在程序中运行后,不断刷新保存导出图片的文件夹,发现系统确实产生了数据,以文件+tmp的命名方式存放,但不知道为什么,系统运行完毕,所有的图片还是没有。这条路看来不通。

     没折了,到CSDN发帖子吧,地址:http://community.csdn.net/Expert/topic/5618/5618139.xml?temp=.6252252

  帖子发出来以后,很快有人回复。但是回复的答案就是我找到的两个存储过程的。看来问题可能无法解决。

      但是任务还是的完成,最后万般无奈之下,我给认识的一位大侠发了求救信,他只是提供了一条思路,用流的方式写入。我按照这个思路,抱着试试看的心情,将代码改成如下的样式:

 

         set  rs2 = Server.CreateObject( " Adodb.Recordset " )
        sql2
= " select top 1 * from [User] order by UserID desc "
        rs2.open sql2,cn,
1 , 3
        rs2(
" Photo " ).AppendChunk rs( " Picture1 " )
        rs2.update
        rs2.close
        
set  rs2 = nothing
      测试了一下,运行成功!
消息平台接入实战:Hermes Agent 实现微信/钉钉日常任务自动化的 4 步配置 揭示 Hermes Agent 接入微信/钉钉时高频失效的根本原因——非 API 调用问题,而是上下文边界缺失;详解通过 soul.md 锁定人格基线、skills/ 目录原子化封装技能、CLAUDE.md 控制记忆节奏、Docker 环境适配四步构建可信赖自动化信任链,并给出身份证号过滤、中文标点 阅读详情

相关推荐

Keras神经网络可视化模块keras.utils.visualize_util的安装配置方法

本文介绍了如何安装和配置keras.utils.visualize_util模块,并提供了一个简单的示例演示如何使用该模块来可视化神经网络的结构。在上述代码中,我们首先定义了一个简单的神经网络模型,该模型具有一个输入层、一个隐藏层和一个输出层,其中隐藏层具有512个神经元,输出层具有10个神经元。运行上述代码后,我们将在当前工作目录下找到一个名为model.png的文件,它显示了神经网络的结构图。这种方式有效地展示了整个过程,让我们能够更好地理解神经网络的结构,方便对其进行改进和调试。

. 871

使用textcopy对sqlserver的Image字段进行读取和写入

由于类型的特殊性,对于sqlserver 2000的image字段的读取和写入操作通常会给人带来一些麻烦。应急的时候,我们并不想去重写代码来操作数据。因此大多数情况下人们会使用textcopy这个工具(老早老早以前有人说可以用存储过程,实际上存储过程中最终也是调用的textco

houshen的专栏 1172

SQLSERVER中对Image(大对象)对象操作

SQLSERVER中对Image(大对象)对象操作

SQL Server中的Image数据类型的操作

准备工作,在库Im_Test中建立一张Im_Info,此中有两个字段,分别为Pr_Id (INT),Pr_Info (IMAGE),用来存储图形编号及图形信息。其语法如下:  CREATE TEALE Im_Info (  Pr_Id INT NULL ,  Pr_Info IMAGE NULL  )  第一步: 往中插入一条记录,并初始化PR_INFO字段。其语法如下:

IT Tech 1252

text与image字段的转换

下面的例子实现text与image字段的转换:use pubs create table #t(id int,a image,b text)go declare @id int,@ps binary(16),@pd binary(16)declare tb cursor localforselect pub_id,textptr(pr_info) from pub_infowhere text

RunUpwind的专栏 4108

asp创建mysql_ASP创建数据库数据字段

在已有数据库中创建conn=server.CreateObject("adodb.connection")sql="provider=microsoft.jet.oledb.4.0;datasource="&server.MapPath("BOOK.mdb")conn.open sqlConn.Execute("create table bbb(id AUTOINCREMENT(1,1)...

weixin_39942400的博客 194

读写SQL数据库Image字段

<br />转自:http://www.cnblogs.com/lhuser/articles/1768343.html<br /> <br /><br />C# 读写SQL数据库Image字段2009-01-31 19:27    在用C#对数据库Image字段读写过程中,遇到了一些问题,在网上搜索发现此类问题比较多,但是很少提供比较全面的答案,在此我从对Image字段读写文件和读写图片两个方面谈谈我的认识.<br />     在讲主题之前,我应该阐明一点,数据库Image字段保存的是字节,所以写入数

wang4978的专栏 6070

Access sql语句创建字段类型

创建一张空Sql="Create TABLE [名]" 创建一张有字段Sql="Create TABLE [名]([字段名1] MEMO NOT NULL, [字段名2] MEMO,

zhengxiuchen86的博客 8589

mysql千万级字段操作记录

链接: https://cloud.tencent.com/developer/article/1524019 create table new_origin_order_line like origin_order_line; ## 生成删除索引语句 SELECT CONCAT('ALTER TABLE ',i.TABLE_NAME,' DROP INDEX ',i.INDEX_NAME,';') FROM INFORMATION_SCHEMA.STATISTICS i WHERE TABLE_SCHE

m0_46300881的博客 1487

asp创建mysql_asp创建复制 字段类型附录

asp创建复制 字段类型附录更时间:2008年01月09日 13:39:29 作者:asp创建复制 字段类型附录在已有数据库中创建sql="provider=microsoft.jet.oledb.4.0;datasource="&server.MapPath("BOOK.mdb")conn.opensqlConn.Execute("createtablebbb...

weixin_39532352的博客 126

asp向access添加字段

创建一张空Sql="Create TABLE [名]" 创建一张有字段Sql="Create TABLE [名]([字段名1] MEMO NOT NULL, [字段名2] MEMO, [字段名3] COUNTER NOT NULL, [字段名4] DATETIME, [字段名5] TEXT(200), [字段名6] TEXT(200)) 字段类型: 2 : "SmallInt", // 整型 3 : "Int", ...

abc62201的博客 470

ASP创建ACCESS或添加字段

创建一张空Sql="Create TABLE [名]"创建一张有字段Sql="Create TABLE [名]([字段名1] MEMO NOT NULL, [字段名2] MEMO, [字段名3] COUNTER NOT NULL, [字段名4] DATETIME, [字段名5] TEXT(200), [字段名6] TEXT(200))字段类型: 2 : "SmallIn...

aikk20319的博客 528

【ASP】ASP创建数据库数据字段

在已有数据库中创建<% set conn=server.CreateObject("adodb.connection")sql="provider=microsoft.jet.oledb.4.0;data source="&server.MapPath("BOOK.mdb")conn.open sqlConn.Execute("creat...

weixin_33700350的博客 1416

mysql复制列及字段内容替换

mysql字段内容替换 UPDATE 名 SET 字段名= replace(字段名, '查找内容', '替换成内容'); UPDATE image_file SET path_nei = replace(path_nei, '/home/upload', '/opt/upload'); mysql复制一列数据到另一列 UPDATE 名 SET 目标类名=源列名; UPDATE `image_file` SET path_nei = path; ...

420

sql 创建、删除 增加字段 删除字段操作

sql 创建、删除 增加字段 删除字段操作 下面是Sql Server 和 Access 操作数据库结构的常用Sql,希望对你有所帮助。 :create table [名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default \'默认值\' null ,[字段2] ntext null ,[字段...

weixin_34174422的博客 138

这篇文章详细介绍了舰载机阻拦着舰系统的建模与仿真过程,涵盖了从基础理论到具体实现以及结果分析的多个方面(论文复现含详细代码及解释)

内容概要:本文详细介绍了舰载机阻拦着舰系统的建模与仿真过程,基于MATLAB/Simulink平台实现。文章首先阐述了MK7-3型液压阻拦系统的工作原理,包括阻拦索、滑轮缓冲系统、液压制动系统和控制系统的主要数学模型。然后,逐步构建了Simulink仿真模型,涵盖了从输入条件模块到力计算子系统的完整架构。通过对标准情况、不同质量和偏航情况的仿真分析,验证了系统的有效性、质量适应性和偏航纠偏能力。此外,还进行了不同初速度、不同质量以及偏航情况下的仿真对比,并与美军标MK7-3曲线进行对比验证。最后,通过多方向运动参数分析、阻拦索受力分析和安全可靠性验证,全面评估了系统的动态特性和安全性。适用人群:航空航天领域研究人员、高校师生、军事装备工程师及相关专业的研究生。使用场景及目标:①用于教学和科研,帮助学生和研究人员理解舰载机阻拦着舰系统的原理和技术细节;②为工程师提供设计参考,优化现有系统性能;③支持军事装备的研发和测试,确保系统的可靠性和安全性。其他说明:本文不仅提供了详细的建模与仿真步骤,还结合了大量实际工程案例和参考文献,确保了模型的准确性和实用性。同时,文中还探讨了系统的改进方向和工业应用前景,提出了基于PLC控制、故障诊断、电液混合阻拦系统等创方案,为未来的研究和发展指明了路径。

上一篇: 25 种能马上改善网站、提高浏览量的方法
下一篇: 关于在windows 2003 server上架设ftp服务器的一点经验
redcn2004
博客等级 码龄21年 66粉丝 6原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值