存储过程中的二进制图片数据转换为图片文件
2008-10-09 10:59
465 查看
问题:
现在旧库中表A有一个字段是存放图片的,但是字段类型是二进制的。在进行数据迁移的时候,在新库表A里面是放图片文件的名称以及存放路径。所以在迁移的时候需要将二进制图片数据转换成文件。
由于数据迁移是在存储过程中做的,那么在存储过程中如何实现这个功能呢?
----------------------------------------------------------------------------------------------
方法一VB code:
Public filePath As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim mst As ADODB.Stream
Private Sub DataGrid1_DblClick()
If MsgBox("是否接收【" & DataGrid1.Columns(3).Text & "】传送来的『" & DataGrid1.Columns(1).Text & "』吗?", vbQuestion + vbYesNo) = vbYes Then
CommonDialog1.fileName = DataGrid1.Columns(8).Text
CommonDialog1.ShowSave
filePath = CommonDialog1.fileName
Me.MousePointer = 11
Set cn = New ADODB.Connection
cn.ConnectionString = PublicStr
cn.Open
Set rs = New ADODB.Recordset
rs.Open "select * from tbOA_file where file_id='" & frmFile_incept.adoFile.Recordset.Fields(0).Value & "'", cn, adOpenStatic, adLockOptimistic
Set mst = New ADODB.Stream
mst.Type = adTypeBinary
mst.Open
mst.Write rs.Fields(7).Value
mst.SaveToFile filePath, adSaveCreateOverWrite '保存文件,adSaveCreateOverWrite为覆盖以存在文件
rs.Close
cn.Close
Me.MousePointer = 0
MsgBox "现在成功! " & "文件保存在: " & frmFile_incept.filePath, vbInformation, "文件下载"
End If
End Sub
--------------------------------------------------------------------------------------------------------------
方法二 存储过程SQL code:
create PROCEDURE sp_textcopy (
@srvname varchar (30),
@login varchar (30),
@password varchar (30),
@dbname varchar (30),
@tbname varchar (30),
@photoname 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 ' + @photoname +
' /W " ' + @whereclause +
'" /F ' + @filename +
' / ' + @direction
EXEC master..xp_cmdshell @exec_str ,no_output
create table photo(id int identity(1,1),photo image,memo nvarchar(50) default 'my photo ')
go
insert photo(photo) values(0x) -- 必须的,且不是null
select * from photo
--truncate table photo
sp_textcopy 'roy ', 'sa ', 'wuxi ', 'test ', 'photo ', 'photo ', 'E:/photo/myphoto/roy3.jpg ', 'where id=5 ', 'I ' --注意条件是 id=1
3、读入
sp_textcopy 'roy ', 'sa ', 'wuxi ', 'test ', 'photo ', 'photo ', 'E:/photo/photo/21.jpg ', 'where id=1 ', 'I ' --注意条件是 id=1
sp_textcopy 'roy ', 'sa ', 'wuxi ', 'test ', 'photo ', 'photo ', 'E:/photo/photo/33.jpg ', 'where id=2 ', 'I ' --注意条件是 id=2
go
4、读出成文件
sp_textcopy 'roy ', 'sa ', 'wuxi ', 'test ', 'photo ', 'photo ', 'E:/photo/roy.jpg ', 'where id=1 ', 'O ' --注意条件是 id=1
sp_textcopy 'roy ', 'sa ', 'wuxi ', 'test ', 'photo ', 'photo ', 'E:/photo/roy1.jpg ', 'where id=2 ', 'O '
sp_textcopy 'roy ', 'sa ', 'wuxi ', 'test ', 'photo ', 'photo ', 'E:/photo/roy2.jpg ', 'where id=3 ', 'O '
sp_textcopy 'roy ', 'sa ', 'wuxi ', 'test ', 'photo ', 'photo ', 'E:/photo/roy3.jpg ', 'where id=4 ', 'O '
sp_textcopy 'roy ', 'sa ', 'wuxi ', 'test ', 'photo ', 'photo ', 'c:/bb.doc ', 'where id=5 ', 'O ' --注意条件是 id=2
现在旧库中表A有一个字段是存放图片的,但是字段类型是二进制的。在进行数据迁移的时候,在新库表A里面是放图片文件的名称以及存放路径。所以在迁移的时候需要将二进制图片数据转换成文件。
由于数据迁移是在存储过程中做的,那么在存储过程中如何实现这个功能呢?
----------------------------------------------------------------------------------------------
方法一VB code:
Public filePath As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim mst As ADODB.Stream
Private Sub DataGrid1_DblClick()
If MsgBox("是否接收【" & DataGrid1.Columns(3).Text & "】传送来的『" & DataGrid1.Columns(1).Text & "』吗?", vbQuestion + vbYesNo) = vbYes Then
CommonDialog1.fileName = DataGrid1.Columns(8).Text
CommonDialog1.ShowSave
filePath = CommonDialog1.fileName
Me.MousePointer = 11
Set cn = New ADODB.Connection
cn.ConnectionString = PublicStr
cn.Open
Set rs = New ADODB.Recordset
rs.Open "select * from tbOA_file where file_id='" & frmFile_incept.adoFile.Recordset.Fields(0).Value & "'", cn, adOpenStatic, adLockOptimistic
Set mst = New ADODB.Stream
mst.Type = adTypeBinary
mst.Open
mst.Write rs.Fields(7).Value
mst.SaveToFile filePath, adSaveCreateOverWrite '保存文件,adSaveCreateOverWrite为覆盖以存在文件
rs.Close
cn.Close
Me.MousePointer = 0
MsgBox "现在成功! " & "文件保存在: " & frmFile_incept.filePath, vbInformation, "文件下载"
End If
End Sub
--------------------------------------------------------------------------------------------------------------
方法二 存储过程SQL code:
create PROCEDURE sp_textcopy (
@srvname varchar (30),
@login varchar (30),
@password varchar (30),
@dbname varchar (30),
@tbname varchar (30),
@photoname 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 ' + @photoname +
' /W " ' + @whereclause +
'" /F ' + @filename +
' / ' + @direction
EXEC master..xp_cmdshell @exec_str ,no_output
create table photo(id int identity(1,1),photo image,memo nvarchar(50) default 'my photo ')
go
insert photo(photo) values(0x) -- 必须的,且不是null
select * from photo
--truncate table photo
sp_textcopy 'roy ', 'sa ', 'wuxi ', 'test ', 'photo ', 'photo ', 'E:/photo/myphoto/roy3.jpg ', 'where id=5 ', 'I ' --注意条件是 id=1
3、读入
sp_textcopy 'roy ', 'sa ', 'wuxi ', 'test ', 'photo ', 'photo ', 'E:/photo/photo/21.jpg ', 'where id=1 ', 'I ' --注意条件是 id=1
sp_textcopy 'roy ', 'sa ', 'wuxi ', 'test ', 'photo ', 'photo ', 'E:/photo/photo/33.jpg ', 'where id=2 ', 'I ' --注意条件是 id=2
go
4、读出成文件
sp_textcopy 'roy ', 'sa ', 'wuxi ', 'test ', 'photo ', 'photo ', 'E:/photo/roy.jpg ', 'where id=1 ', 'O ' --注意条件是 id=1
sp_textcopy 'roy ', 'sa ', 'wuxi ', 'test ', 'photo ', 'photo ', 'E:/photo/roy1.jpg ', 'where id=2 ', 'O '
sp_textcopy 'roy ', 'sa ', 'wuxi ', 'test ', 'photo ', 'photo ', 'E:/photo/roy2.jpg ', 'where id=3 ', 'O '
sp_textcopy 'roy ', 'sa ', 'wuxi ', 'test ', 'photo ', 'photo ', 'E:/photo/roy3.jpg ', 'where id=4 ', 'O '
sp_textcopy 'roy ', 'sa ', 'wuxi ', 'test ', 'photo ', 'photo ', 'c:/bb.doc ', 'where id=5 ', 'O ' --注意条件是 id=2
相关文章推荐
- 用VB将WORD文档(或其他的二进制数据)生成xml文件并互相转换
- 用VB将WORD文档(或其他的二进制数据)生成xml文件并互相转换
- 用VB将WORD文档(或其他的二进制数据)生成xml文件并互相转换
- 从VS界面把图片导入数据库:①:把图片转换为二进制数据,②再把二进制数存进数据库
- php接收二进制文件转换成图片
- php将图片文件转换成二进制输出的方法
- c++从文件读数据转换为二进制,再转换为字符文件
- mysql数据表存储图片等二进制文件
- android 如何对文件中的16进制数据转换成二进制数据
- php将图片文件转换成二进制输出的方法
- 用VB将WORD文档(或其他的二进制数据)生成xml文件并互相转换
- 将图片(二进制文件)存储于数据库,论文件字节流与二进制字符串相互转换
- C#中利用ADO.NET存储图片、文件等二进制数据
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- 用VB将WORD文档(或其他的二进制数据)生成xml文件并互相转换
- Qt:图片与二进制数据的转换
- 获取本地路径的方法,在沙河路径中保存图片 ,将保存文件到沙河路径下 把图片转换成NSData类型的数据来保存文件
- JavaScript如何转换二进制数据显示成图片
- php接收二进制文件转换成图片