2017-10-16 69 views
-1

当我将图像插入SQL Server数据库时,如果图像为空,则会将0x值插入到数据库图像列中。将图像保存到SQL Server数据库中

当我取回以0x十六进制值的图像,我得到一个错误:

Parameter is not valid

string strsql = "SELECT [ID],PIC_Name FROM [HRMS].[dbo].[Employee_PC] where Id = '" + mFieldValue1 + "'"; 
myconn = new OleDbConnection(clsConnections.conString); 
myconn.Open(); 

cmd = new OleDbCommand(strsql, myconn); 
OleDbDataReader dr = null; 

dr = cmd.ExecuteReader(); 
while (dr.Read()) 
{ 
    if ((byte[])dr[1] == null) 
    //if (picData == null) 
    { 
     pictureBox1.Image = null; 
    } 
    else 
    { 
     MemoryStream ms = new MemoryStream((byte[])dr[1]); 
     ms.Position = 0; 
     pictureBox1.Image = new Bitmap(ms); 
    } 
} 
+0

检查,如果从数据库返回的值不是0X(或为DBNull) –

+0

*您可以保存*图像您的数据库,但我强烈建议你只保存到实际文件的引用。 – Robert

回答

0

dr[1]不会null,所以都不会对(byte[])dr[1]。你想检查那个数组中的第一个字节

byte[] picData = (byte[])dr[1]; 

if (picData[0] == 0) 
{ 
    pictureBox1.Image = null; 
} 
else 
{ 
    MemoryStream ms = new MemoryStream(picData); 
    ms.Position = 0; 
    pictureBox1.Image = new Bitmap(ms); 
} 
相关问题