oracle 中一列存储的是图片~~blob类型~~表:
Student(s_name,s_pic)记录很多~~所以还要考虑效率问题~~就是要读出来图片然后保存在c:\student文件夹下~图片名用字段s_name.jpg求此代码~~或者提点提点~~写出重要的也行~~小弟分数不多,求帮助~~我是用System.Data.OracleClient
Student(s_name,s_pic)记录很多~~所以还要考虑效率问题~~就是要读出来图片然后保存在c:\student文件夹下~图片名用字段s_name.jpg求此代码~~或者提点提点~~写出重要的也行~~小弟分数不多,求帮助~~我是用System.Data.OracleClient
byte[] empByte = (byte[])dtEmployees.Rows[0]["emp_FilePath"];
//内存数据流
MemoryStream imageStream = new MemoryStream(empByte);
//获取内存数据流的图像
System.Drawing.Image empImage = System.Drawing.Image.FromStream(imageStream, true);empImage.Save(路径加文件名);
MemoryStream buf=new MemoryStream((byte[])reader[0]); //reader是datareader,是你那个存图片的字段
Image image=Image.FromStream(buf,true);//这个就是图片了
//pictureBox1.Image=image; //你可以把他显示到pictureBox1上看一下上边发的就是核心的代码
OracleCommand cmd = cn.CreateCommand();
cmd.CommandText = "select s_pic
from Student";
try
{
cn.Open();
MemoryStream stream = new MemoryStream();
IDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
byte[] pic = (byte[])reader[0];
stream.Write(pic, 0, pic.Length);
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;FileName= demo.JPG");
Response.BinaryWrite(pic);
Response.End();
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
cn.Close();
}
connection.Open();
OracleCommand command = new OracleCommand("select Image from Image where ...", connection);
OracleDataReader dr = command.ExecuteReader();
dr.Read();
MemoryStream buf=new MemoryStream((byte[])dr[0]); //reader是datareader,是你那个存图片的字段
Image image=Image.FromStream(buf,true);//这个就是图片了
看这张表
Student(s_name,s_pic(blob)) 最后要图片名是s_Name.jpg
不知道怎么办
然后对
dr["s_pic"]做
MemoryStream buf=new MemoryStream((byte[])dr["s_pic"]);把dr["s_name"].ToString()+".jpg"当文件名.这有什么不知道怎么办的?
cmd.CommandText = "select s_pic,s_name from student";
/*OracleDataAdapter da = new OracleDataAdapter();
da.SelectCommand = cmd;
da.Fill(ds);
DataTable tb = ds.Tables[0];
conn.Close();
for (int x = 0; x < tb.Rows.Count; x++)
{
blob = (byte[])tb.Rows[x]["s_pic"];
string jpgname = tb.Rows[x]["s_name"].ToString();
fs = new FileStream("c:\\"+jpgname+".jpg", FileMode.Create, FileAccess.Write);
fs.Write(blob, 0, blob.Length);
fs.Close();
}*/
OracleDataReader re = cmd.ExecuteReader();
while (re.Read())
{
blob = new byte[re.GetBytes(0, 0, null, 0, int.MaxValue)];
re.GetBytes(0, 0, blob, 0, blob.Length);
//re.Close();
string jpgname = re["s_name"].ToString();
fs = new FileStream("c:\\" + jpgname + ".jpg", FileMode.Create, FileAccess.Write);
fs.Write(blob, 0, blob.Length);
fs.Close();
}
re.Close();
conn.Close();汗~~这是我写的两种方法~~(注释的是一种)还有你的~~你说那个执行的效率高??