-1

私のWebページの画像では、ファイルアップロードコントロールから取得し、SQLサーバーに保存する必要があります。SQLサーバーに画像を保存するためのストアドプロシージャを作成するにはどうすればよいですか?

4

2 に答える 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 に答える