C#从数据库读取图片 30

byte[]imagebytes=null;SqlConnectioncon=newSqlConnection("server=(local);uid=sa;pwd=;d... byte[] imagebytes = null;

SqlConnection con = new
SqlConnection("server=(local);uid=sa;pwd=;database=db_05");
con.Open();
SqlCommand com = new SqlCommand("select image from //图片已经转为二进制存储在数据库
student where number=‘“+label1.text+”’", con); //image字段中
SqlDataReader dr = com.ExecuteReader();
while (dr.Read())
{
imagebytes = (byte[])dr.GetValue(1); //运行到这一步的时候提示我“索引超出数组范围”
}
dr.Close();
com.Clone();
con.Close();
MemoryStream ms = new MemoryStream(imagebytes);
Bitmap bmpt = new Bitmap(ms);
pictureBox1.Image = bmpt;
问题如上,求高手指点,解决另加分!!!!
另外我写入图片时候是这样的
System.IO.MemoryStream Ms = new MemoryStream();
this.pictureBox1.Image.Save(Ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] img = new byte[Ms.Length];
Ms.Position = 0;
Ms.Read(img 0, Convert.ToInt32(Ms.Length));
Ms.Close(); 以上一段是将图片转为二进制
a.Open();
是不是写入图片有问题
展开
 我来答
syht2000
高粉答主

2013-07-03 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
1、sql的单引号写错了,应该是"select image from student where number='"+label1.text+"'"
或者是"select top 1 image from student where number='"+label1.text+"'"
2、while(dr.Read())的while改成if
追问
您好1在程序中单引号没有写错。
2.改为if后,问题没有改变
百度网友7fed6fa
2013-07-03 · 超过33用户采纳过TA的回答
知道答主
回答量:107
采纳率:0%
帮助的人:57万
展开全部
数据库中应存放的是图片的地址,图片存放于服务器端的文件夹中。
如果你考虑这个方案的话,可以贴一段代码给你。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
申江渔夫
2013-07-03 · TA获得超过895个赞
知道小有建树答主
回答量:1479
采纳率:0%
帮助的人:696万
展开全部
改成dr.GetValue(0)
追问
改了之后出现 Bitmap bmpt = new Bitmap(ms);这一句 参数无效
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式