如何在图像列中存储图片?

时间:2009-04-13 17:00:11

标签: sql-server-2005

我有一个用户表:

Name varchar(20)
Picture image

我想将图像存储到Picture列中 - 如何使用SQL Scripts实现此目的?

2 个答案:

答案 0 :(得分:10)

以下是将图像存储到sql server的示例代码:

SqlConnection conn = new SqlConnection(connectionString);

try
{
    int imageLength = uploadInput.PostedFile.ContentLength;
    byte[] picbyte = new byte[imageLength];
    uploadInput.PostedFile.InputStream.Read (picbyte, 0, imageLength);

    SqlCommand command = new SqlCommand("INSERT INTO ImageTable (ImageFile) VALUES (@Image)", conn);
    command.Parameters.Add("@Image", SqlDbType.Image);
    command.Parameters[0].Value = picbyte;

    conn.Open();
    command.ExecuteNonQuery();
    conn.Close();
}
finally
{
    if (conn.State != ConnectionState.Closed)
    {
        conn.Close();
    }
}

注意: uploadInput是一个文件输入控件,用于将图像文件上传到服务器。代码取自ASP.NET应用程序。

编辑:以下是图片类型列的插入脚本:

INSERT INTO ImageTable (ImageColumn)

SELECT ImageColumn FROM 
OPENROWSET(BULK N'C:\SampleImage.jpg', SINGLE_BLOB) 
AS ImageSource(ImageColumn);

答案 1 :(得分:2)

对于纯脚本访问,请在联机丛书中查找BULK命令。 SQL Server 2005允许您直接从磁盘提取二进制数据。但是,这不适用于以前版本的SQL Server。