我试图在这里粗略地列出一个概念,并且我有一个奇怪的问题。为了您的娱乐...Varbinary(最大)插入 - 在不相关的db记录之间重复varbinary(max)字段
总结:
我想要做的就是产生在C#代码的图像,将其插入到一个SQL2012分贝的VARBINARY(最大值)字段,然后在显示它SSRS报告。 (是的,我已经记得在每次测试后删除rdl.data缓存。)图像只是一个带有高亮弧段的圆。这个数据库表是基于http://www.kodyaz.com/articles/display-database-image-using-sql-server-2008-reporting-services.aspx中的一个我唯一改变的是添加一个主键。我创建了一个DataSet(xsd)文件,并从服务器资源管理器中将表拖动到它上面。
奇怪的是,虽然我插入成功的记录,并正确插入fname字段,据我所知,二进制字段始终是第一个添加的副本。当我最初通过写入本地磁盘文件来测试主要图形代码时,我还应该提到,图像总是正确显示。
起初,我认为这可能是一个问题,我从一个Web服务,但我得到了完全相同的行为在本地测试Web应用程序中运行代码。所有的代码都是本地的方法。没有什么远程执行无可否认,我只涉猎图形。这是从各种其他参考黑客入侵。这是代码的核心。我试过/抓住它并没有给出任何例外。
Bitmap x;
Pen p = new Pen(System.Drawing.Color.Red, 5);
Pen p2 = new Pen(System.Drawing.Color.Pink, 5);
SolidBrush b;
RectangleF rf;
Graphics gr;
p = new Pen(System.Drawing.Color.Red, iThick);
p2 = new Pen(System.Drawing.Color.Pink, iThick);
x = new Bitmap(500, 500);
rf = new RectangleF(0, 0, x.Width, x.Height);
gr = Graphics.FromImage(x);
b = new SolidBrush(System.Drawing.Color.White);
gr.FillRectangle(b, rf);
rf = new RectangleF(p.Width, p.Width, x.Width - p.Width * 2, x.Height - p.Width * 2);
gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
gr.DrawEllipse(p2, rf);
gr.DrawArc(p, rf, fStartAngle, fSweepAngle);
byte[] bytes;
using (System.IO.MemoryStream sampleStream = new System.IO.MemoryStream())
{
x.Save(sampleStream, System.Drawing.Imaging.ImageFormat.Bmp);
bytes = sampleStream.ToArray();
dsCountryTableAdapters.DBFiles1TableAdapter ta = new dsCountryTableAdapters.DBFiles1TableAdapter();
ta.Insert(sImageName, bytes);
}