在我的网页图像从文件上传控件中获取,它必须存储在 sql server.how 编写存储过程以将图像保存在 sql server 中?
user1469016
问问题
9936 次
2 回答
5
一些示例代码(未经测试,可能需要一些修复):
CREATE PROCEDURE SaveFile(@id int, @file varbinary(max)) AS
INSERT INTO MyFiles VALUES(@id, @file)
GO
在 .NET 代码中:
SqlCommand comm = new SqlCommand(@"SaveFile")
comm.CommandType = CommandType.StoredProcedure;
SqlParameter id = new SqlParameter("int", SqlDbType.Int);
id.value = 1; // some id
FileStream fileStream = ... your file;
byte[] buf = new byte[fileStream.length];
fileStream.Read(buf, 0, buf.length);
SqlParameter file = new SqlParameter("@file", SqlDbType.VarBinary, buf.Length);
file.Value = buf;
comm.Parameters.Add(id)
comm.Parameters.Add(file)
comm.Execute();
于 2012-06-21T08:22:58.847 回答
1
只需使用通常的存储过程,只需使用不同的数据类型,将其保存为字节数组,因此您必须先将图像转换为字节数组,然后再将其作为参数传递给您的存储过程,同时保存长度和文件类型。
这是一个示例存储过程。我会把剩下的留给你。如果您知道如何在 Web 应用程序中执行查询,则可以调用此过程。只是谷歌它。
USE [mydatabasename]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[myprocedurename]
@ImageFile image,
@FileType nvarchar(10),
@FileSize int
AS
-- INSERT a new row in the table.
INSERT [dbo].[mytablename]
(
[ImageFile],
[FileType ],
[FileSize ]
)
VALUES
(
@ImageFile,
@FileType,
@FileSize
)
-- Get the IDENTITY value for the row just inserted.
SELECT @ImageId=SCOPE_IDENTITY()
我猜图像文件类型将过时,所以你应该使用不同的文件类型来保存你的字节
于 2012-06-21T08:13:00.143 回答