将屏幕截图插入数据库

时间:2013-07-18 22:46:54

标签: c# sql-server

我读到了将图像插入SQL服务器数据库但我无法使我的代码工作。这是我的初始代码。

public void InsertResults(string Id, Bitmap bitmap)
        {
            try
            {
                using (SqlConnection conn = new SqlConnection(connectionString))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand("INSERT INTO Results VALUES(@ResultID, @HasSucceeded, @ScenarioID, @Screenshot)", conn))
                     {

                        cmd.Parameters.AddWithValue("@ResultID", 0);
                        cmd.Parameters.AddWithValue("@HasSucceeded", 0);
                        cmd.Parameters.AddWithValue("@ScenarioID", Id);
                        cmd.Parameters.AddWithValue("@Screenshot", bitmap);

                        cmd.ExecuteNonQuery();
                     }
                }
            }
            catch (SqlException ex)
            {
                //Log exception
            } 
        }

我知道你不能像我上面尝试的那样插入一个Bitmap图像。如何将Bitmap转换为我可以插入的内容?

我知道必须使用下面的一些SQL,但我不确定如何将它集成到我的代码中。

INSERT INTO DatabaseImageTable ([image name], [image])
SELECT 'SQL Server Image', *
FROM OPENROWSET(BULK N'C:\images\sql-server-image-file.jpg', SINGLE_BLOB) image;

1 个答案:

答案 0 :(得分:2)

将位图写为二进制文件:最常见的是,将其保存到MemoryStream,然后在MemoryStream()上调用ToArray()以获取byte []。这个byte []可以简单地存储在“image”类型的列中,或者(最好)“varbinary(max)”。