如何在varbinary列中显示imagebox中的图像,而不使用C#web应用程序中的genric处理程序 [英] How to display image in imagebox from varbinary column , without using genric handler in C# web application

查看:38
本文介绍了如何在varbinary列中显示imagebox中的图像,而不使用C#web应用程序中的genric处理程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的HTML方面



This is my html side

<img id="imgAddressProof" runat="server" src=""/>







代码背后的代码



DataTable dt = fetchEmpMst('Em0001');

byte [] data = Convert.FromBase64String(dt.Rows [0] [ ADDRESS_PROOF_IMG]。ToString());

imgAddressProof.Src =data:image; base64,+ Convert.ToBase64String(dt.Rows [0] [ADDRESS_PROOF_IMG]);





方法



公共静态DataTable fetchEmpMst (string searchTerm)

{

DataTable dt = new DataTable();

try

{

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings [constr]。ConnectionString);

string query =SELECT ADDRESS_PROOF_IMG FROM DBO.EMPLOYEE_MASTER WHERE EMPLOYEE_CODE ='+ searchTerm + ';

SqlComma nd cmd = new SqlCommand(query);

cmd.Parameters.AddWithValue(@ SearchTerm,searchTerm);

cmd.Connection = con;

SqlDataAdapter da = new SqlDataAdapter(cmd);

da.Fill(dt);



}

catch(例外)

$

}

返回dt;

}



我的sql服务器列值为0x55706C6F61642F6164642D6D6F72652E6A7067。



调试内部方法时我收到system.byte。无法转换为字节数组。



我尝试了什么:



我试图将数据表值隐式转换为字节数组。



byte [] data = byte [](dt.Rows [0] [ADDRESS_PROOF_IMG]。ToString());



谷歌搜索了很多,但得不到合适的答案。



请指导我。

提前致谢....




Code behind Code

DataTable dt= fetchEmpMst('Em0001');
byte[] data = Convert.FromBase64String(dt.Rows[0]["ADDRESS_PROOF_IMG"].ToString());
imgAddressProof.Src = "data:image;base64," + Convert.ToBase64String(dt.Rows[0]["ADDRESS_PROOF_IMG"]);


Method

public static DataTable fetchEmpMst(string searchTerm)
{
DataTable dt = new DataTable();
try
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ConnectionString);
string query = "SELECT ADDRESS_PROOF_IMG FROM DBO.EMPLOYEE_MASTER WHERE EMPLOYEE_CODE='" + searchTerm + "'";
SqlCommand cmd = new SqlCommand(query);
cmd.Parameters.AddWithValue("@SearchTerm", searchTerm);
cmd.Connection = con;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);

}
catch (Exception)
{
}
return dt;
}

My sql server column value is 0x55706C6F61642F6164642D6D6F72652E6A7067.

I am getting system.byte while debugging inside method .Not able to convert into byte array.

What I have tried:

I have tried to implicitly covert datatable value to byte array.

byte[] data =byte[](dt.Rows[0]["ADDRESS_PROOF_IMG"].ToString());

Googled a lot,but not getting appropriate answer.

Please guide me.
Thanks in advance....

推荐答案

首先,您的SQL存在缺陷。您已经传入了一个参数,但接受该参数的SQL中没有任何内容。你做的是通过字符串连接直接传递参数。这是一种糟糕的技术。查询应该是:

First, your SQL is flawed. You've got a parameter being passed in but nothing in the SQL that accepts that parameter. What you DID do was pass the parameter directly, through string concatenation. This is bad technique. The query should be:
string query = "SELECT Address_Proof_Img FROM dbo.Employee_Master WHERE Employee_Code=@searchTerm";



您的参数需要匹配它:


And your parameter needs to match it:

cmd.Parameters.AddWithValue("@searchTerm", searchTerm);





现在,一旦你有了字节数组,你必须把它包装好一个MemoryStream对象,用于获取Bitmap构造器将接受的流:



Now, once you have the byte array back, you have to wrap it in a MemoryStream object to get a stream that the Bitmap constuctor will accept:

Bitmap image;
using (var ms = new MemoryStream(data))
{
    image = new Bitmap(ms);
}


这篇关于如何在varbinary列中显示imagebox中的图像,而不使用C#web应用程序中的genric处理程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆