使用C#读取SQL数据库中的图片
SQL中TEXT数据库下TABE1表中包含有name与photo{属性为imagenull}的列,已知道photo中保存的图片是对二进制数据流经Base64编码后的字符串...
SQL中 TEXT数据库 下TABE1表中包含有 name 与 photo{属性为image null}的列, 已知道photo中保存的图片是对二进制数据流经Base64编码后的字符串,,,,请问下,我的Winform中 有一个pictureBox1 和一个BUtton按钮,请问我如何通过button的点击,使picturebox中显示出数据库中的图片, 谢谢了,初学者,麻烦大神详细些 数据库连接为 本机 sa 8888
展开
展开全部
//--用自己的初始连接 初始一个SQL连接实体
My.Data.SQLDataContext dbc = new My.Data.SQLDataContext("Data Source=.;Initial Catalog=TEXT;uid=sa;pwd=8888;");
DataSet ds = null;
string commads = "SELECT [name],[photo] FROM [TABE1]";
ds = dbc.GetDataSet(commads);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
try
{
//--判断字段数据是否有数据且有照片流数据
if (((Byte[])ds.Tables[0].Rows[i]["photo"]).Length > 0 && ((Byte[])ds.Tables[0].Rows[i]["photo"]).Max() > 0)
{
byte[] aa = (Byte[])ds.Tables[0].Rows[i]["photo"];
Bitmap bit = new Bitmap(new System.IO.MemoryStream((Byte[])ds.Tables[0].Rows[i]["photo"]));
//--保存照片
pictureBox1.Image = bit;
}
}
catch (Exception ex)
{ MessageBox.Show(ex.ToString()); }
ds.Clear(); ds.Dispose();
}
}
试试
My.Data.SQLDataContext dbc = new My.Data.SQLDataContext("Data Source=.;Initial Catalog=TEXT;uid=sa;pwd=8888;");
DataSet ds = null;
string commads = "SELECT [name],[photo] FROM [TABE1]";
ds = dbc.GetDataSet(commads);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
try
{
//--判断字段数据是否有数据且有照片流数据
if (((Byte[])ds.Tables[0].Rows[i]["photo"]).Length > 0 && ((Byte[])ds.Tables[0].Rows[i]["photo"]).Max() > 0)
{
byte[] aa = (Byte[])ds.Tables[0].Rows[i]["photo"];
Bitmap bit = new Bitmap(new System.IO.MemoryStream((Byte[])ds.Tables[0].Rows[i]["photo"]));
//--保存照片
pictureBox1.Image = bit;
}
}
catch (Exception ex)
{ MessageBox.Show(ex.ToString()); }
ds.Clear(); ds.Dispose();
}
}
试试
更多追问追答
追问
现在就是我库里的《二进制数据》是经过Base64编码后的,,,图片是对二进制数据流经Base64编码后的字符串,现在总读不成功,,是不是要String strbaser64 = Convert.ToBase64String(XXX)之类的东西啊 现在程序读写自己的图片都可以了,有几条《二进制数据》的图片信息是他人的,我现在只知道它的二进制数据流是通过了BASE64编码的
追答
恩 对的byte[] aa = Convert.FromBase64String(ds.Tables[0].Rows[i]["photo"]);这样子试试
展开全部
直接用数据绑定,不需要读成字符串
追问
可以详细说下吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询