【问题标题】:Retreving an image stored on SQl Server CE 3.1检索存储在 SQl Server CE 3.1 上的图像
【发布时间】:2010-12-12 14:07:09
【问题描述】:

我正在使用 C#、.NET Compact Framework 2.0 SP2 和 SqlServer CE 3.1 为 Windows Mobile 6.0 开发 WinForm 应用程序。

我有这段代码不工作:

using (SqlCeDataReader reader = cmd.ExecuteReader())
{
    if (reader.Read())
    {
        //read the signature from the database
        long imgSize = reader.GetBytes(0, 0, null, 0, 0);
        image= new byte[imgSize];
        reader.GetBytes(0, 0, image, 0, 0);
    }
}

我认为从图像中获取包含字节的列中存储的所有数据存在问题。

当我这样做时:

bitmapImage = new Bitmap(new MemoryStream(image));

我遇到了 OutOfMemoryException。

但如果我使用 TableAdapter 来获取图像,它就可以完美地工作。

我做错了什么?

谢谢。

【问题讨论】:

    标签: c# windows-mobile compact-framework image-manipulation sql-server-ce


    【解决方案1】:

    试试这个:

    var ms = new MemoryStream(image)
    bitmapImage = new Bitmap(ms);
    // dont close the memorystream
    

    更新

    问题出在

    reader.GetBytes(0, 0, buffer, 0, 0);
    

    显然它的长度需要超过 0 个字节(最后一个参数)。

    【讨论】:

    • 是的,你是对的。我已将该行代码更改为: reader.GetBytes(0, 0, buffer, 0, imgSize);而且,它有效!!!
    • 酷,很高兴这很容易,有时这些事情就会发生:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 2011-01-26
    • 2014-08-13
    • 1970-01-01
    • 2011-08-02
    • 2011-07-24
    • 2012-03-03
    相关资源
    最近更新 更多