我試圖在這裏粗略地列出一個概念,並且我有一個奇怪的問題。爲了您的娛樂...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);
}