sql server二进制图片保存出来放到文件夹。怎么实现?

啰嗦一箩筐 2017-08-01 05:04:16
sql server数据库表中有一个员工照片表emp_img,图片是二进制存入表的。可不可以把二进制的图片保存到文件夹?图片名称是(员工编号).(格式)。emp_code是员工编号,emp_img是image类型字段。请问要怎么做?有完整的代码或例子吗?跪谢!
...全文
675 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ee3333334444 2018-01-04
  • 打赏
  • 举报
回复
这个最后是咋弄的 ?
顺势而为1 2017-08-03
  • 打赏
  • 举报
回复
这是我以前写的,给你参考


CREATE TABLE myTable(FileName nvarchar(60), 
  FileType nvarchar(60), photo varbinary(max))
GO
 
INSERT INTO myTable(FileName, FileType, photo) 
   SELECT 'Text1.txt' AS FileName, 
      '.txt' AS FileType, 
      * FROM OPENROWSET(BULK N'C:\Text1.jpg', SINGLE_BLOB) AS Document
      
      
--Export Inhesion Product Photo

DECLARE @minProduct_ID int
Select @minProduct_ID=min(Product_ID) From mProductTbl
While @minProduct_ID is not null
        Begin
                   exec sp_textcopy '192.168.10.4','sa','111111','InhesionTradeSZ','mProductTbl','Product_Photo','c:\4662057.bmp','where Product_No=''4662057''','O'  
								End

Select Product_ID,Product_No,Product_Photo From mProductTbl      

顺势而为1 2017-08-03
  • 打赏
  • 举报
回复
以前SQL SERVER 2000安装文件是散的, 新版本的都是打包的, 的确找不到.

啰嗦一箩筐 2017-08-03
  • 打赏
  • 举报
回复
引用 9 楼 appetizing_fish1 的回复:
[quote=引用 6 楼 aierlanhang 的回复:] [quote=引用 2 楼 appetizing_fish1 的回复:] [quote=引用 1 楼 appetizing_fish1 的回复:] 用 sp_textcopy 可以
需要將SQL安裝目錄下的Textcopy.exe 複制到 C:\Program Files\Microsoft SQL Server\80\Tools\Binn 下


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  

[/quote] 请问这么做是什么意思呢?而且我在电脑里都搜索不到Textcopy.exe这个文件。[/quote] 你的 SQL 版本是多少 ?[/quote] sql2008的。
顺势而为1 2017-08-03
  • 打赏
  • 举报
回复
引用 6 楼 aierlanhang 的回复:
[quote=引用 2 楼 appetizing_fish1 的回复:] [quote=引用 1 楼 appetizing_fish1 的回复:] 用 sp_textcopy 可以
需要將SQL安裝目錄下的Textcopy.exe 複制到 C:\Program Files\Microsoft SQL Server\80\Tools\Binn 下


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  

[/quote] 请问这么做是什么意思呢?而且我在电脑里都搜索不到Textcopy.exe这个文件。[/quote] 你的 SQL 版本是多少 ?
OwenZeng_DBA 2017-08-03
  • 打赏
  • 举报
回复
引用 7 楼 aierlanhang 的回复:
[quote=引用 5 楼 z10843087 的回复:] [quote=引用 4 楼 aierlanhang 的回复:] [quote=引用 3 楼 z10843087 的回复:] 为什么不在最开始,,就把图片放到文件夹里[/quo [quote=引用 1 楼 appetizing_fish1 的回复:] 用 sp_textcopy 可以
具体怎么用呢?请问有详细的例子吗?[/quote] 我的意思既然你想吧图片放文件夹,为什么要把图片以二进制的形式写到数据库。可以在图片进来的时候就直接生成文件放到文件夹里。至于实现方式,每种语句都有对应的方法吧,你们用什么开发的程序。[/quote] 这是很久以前公司的程序员用的了,他做的是CS结构系统,但是现在要改成WEB版的,不能再使用这种方法了,否则系统会卡死。但是以前的图片数据就读取不出来,所以还是要想办法把二进制的又变回图片不知道有没有办法。[/quote] 那就是只做这一次对吧,可以写个程序来处理,C# 的话可以参考:
protected void LoadImage(string sql)
        {
            SqlConnection Conn = new SqlConnection("链接字符串");
            Conn.Open();
            SqlCommand cmd = new SqlCommand(sql, Conn);
            byte[] fileData = (byte[])cmd.ExecuteScalar();
            Conn.Close();
            System.IO.MemoryStream ms = new System.IO.MemoryStream(fileData);
            System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
            img.Save("C:\\aa.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
        }
啰嗦一箩筐 2017-08-03
  • 打赏
  • 举报
回复
引用 5 楼 z10843087 的回复:
[quote=引用 4 楼 aierlanhang 的回复:] [quote=引用 3 楼 z10843087 的回复:] 为什么不在最开始,,就把图片放到文件夹里[/quo [quote=引用 1 楼 appetizing_fish1 的回复:] 用 sp_textcopy 可以
具体怎么用呢?请问有详细的例子吗?[/quote] 我的意思既然你想吧图片放文件夹,为什么要把图片以二进制的形式写到数据库。可以在图片进来的时候就直接生成文件放到文件夹里。至于实现方式,每种语句都有对应的方法吧,你们用什么开发的程序。[/quote] 这是很久以前公司的程序员用的了,他做的是CS结构系统,但是现在要改成WEB版的,不能再使用这种方法了,否则系统会卡死。但是以前的图片数据就读取不出来,所以还是要想办法把二进制的又变回图片不知道有没有办法。
啰嗦一箩筐 2017-08-03
  • 打赏
  • 举报
回复
引用 2 楼 appetizing_fish1 的回复:
[quote=引用 1 楼 appetizing_fish1 的回复:] 用 sp_textcopy 可以
需要將SQL安裝目錄下的Textcopy.exe 複制到 C:\Program Files\Microsoft SQL Server\80\Tools\Binn 下


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  

[/quote] 请问这么做是什么意思呢?而且我在电脑里都搜索不到Textcopy.exe这个文件。
OwenZeng_DBA 2017-08-03
  • 打赏
  • 举报
回复
引用 4 楼 aierlanhang 的回复:
[quote=引用 3 楼 z10843087 的回复:] 为什么不在最开始,,就把图片放到文件夹里[/quo [quote=引用 1 楼 appetizing_fish1 的回复:] 用 sp_textcopy 可以
具体怎么用呢?请问有详细的例子吗?[/quote] 我的意思既然你想吧图片放文件夹,为什么要把图片以二进制的形式写到数据库。可以在图片进来的时候就直接生成文件放到文件夹里。至于实现方式,每种语句都有对应的方法吧,你们用什么开发的程序。
啰嗦一箩筐 2017-08-03
  • 打赏
  • 举报
回复
引用 3 楼 z10843087 的回复:
为什么不在最开始,,就把图片放到文件夹里[/quo [quote=引用 1 楼 appetizing_fish1 的回复:] 用 sp_textcopy 可以
具体怎么用呢?请问有详细的例子吗?
OwenZeng_DBA 2017-08-01
  • 打赏
  • 举报
回复
为什么不在最开始,,就把图片放到文件夹里
顺势而为1 2017-08-01
  • 打赏
  • 举报
回复
引用 1 楼 appetizing_fish1 的回复:
用 sp_textcopy 可以
需要將SQL安裝目錄下的Textcopy.exe 複制到 C:\Program Files\Microsoft SQL Server\80\Tools\Binn 下


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  

顺势而为1 2017-08-01
  • 打赏
  • 举报
回复
用 sp_textcopy 可以
本课程根据讲师十多年在世界500强外企的生产环境中的SQL Serer数据库管理和项目实施经验倾心打造。课程系统性强,知识体系完整,覆盖90%以上的企业环境下SQL Server高可用场景,课程中不仅演示详细的操作步骤,更加突出最常见的故障和问题,让学员少走“弯路”,不只是让学员学会“操作”更能让学员“操作”的规范,满满的干货分享,一些课程资料(架构图、部署规划表格等)不仅可以帮助学员掌握技能,也可以作为学员在企业生产环境中实施SQL Server高可用的配置文档、操作手册等。课程的实验环境介绍:1)全部基于微软域环境和企业版SQL Server AOAG - 95%以上的企业环境都是在域环境中,不介绍非域环境和标准版的SQL Server高可用性组,这的配置在企业中较罕见,没有实践意义,不浪费学员时间。2)相应域环境已提前部署和配置好 - 学员导入虚拟机即可开始实验,无需从零开始搭建域环境,所有实验中SQL Server均已加域,直入主题,节省大量时间。3)最新的Windows Server故障转移集群(WS2016、WS2019)和最新版本的SQL ServerSQL2017、SQL2019) -  WS2016-SQL2017与WS2019-SQL2019是目前大多数企业SQL Server高可用的主要平台,基于微软产品生命周期现在一些企业也在讲早期的AOAG向这两个版本迁移,掌握这两种组合不仅让学员学会,更能学有所用。本课程为后续SQL Server进阶课程铺垫,是通向SQL Server DBA 专家的必经之路,讲师每周答疑两次。所有课程资料包括:课程PPT、架构图、部署规划表格、各类脚本学员均可下载。     

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧