c# winform 读取oracle中blob字段的图片并且显示到pictureBox里,保存进库
1.private void button2_Click(object sender, EventArgs e)
2.{
3. OracleConnection conn = dbc.getConnection();//获得conn连
接
4. try
5. {
6. conn.Open();
7. OracleCommand cmd = conn.CreateCommand();
8. https://www.360docs.net/doc/fd9868534.html,mandText = "SELECT zp FROM kk.kkbj WHERE xh = 23
45 ";//查询获得图片流
9.
10. OracleDataReader reader = cmd.ExecuteReader();//创建一
个OracleDateReader对象
11. reader.Read();
12.
13. MemoryStream ms = new MemoryStream((byte[])reader["zp"]
);
14.
15. Image image = Image.FromStream(ms, true);
16.
17. reader.Close();
18. conn.Close();
19.
20. pictureBox1.Image = image;
21. }
22. catch (Exception ee)
23. {
24. MessageBox.Show(ee.Message.ToString());
25. }
26.
27.}
----------下边是上传和存入数据库有https://www.360docs.net/doc/fd9868534.html,和
winform(转)----------------------------------
本文总结如何在.Net Winform和.Net webform(https://www.360docs.net/doc/fd9868534.html,)中将图片存入sqlserver中并读取显示的方法
1,使用https://www.360docs.net/doc/fd9868534.html,将图片上传并存入SqlServer中,然后从SqlServer中读取并显示出来
一,上传并存入SqlServer
数据库结构
create table test
{
id identity(1,1),
FImage image
}
相关的存储过程
Create proc UpdateImage
(
@UpdateImage Image
)
As
Insert Into test(FImage) values(@UpdateImage)
GO
在UpPhoto.aspx文件中添加如下:
C#代码
1.
2.
然后在后置代码文件UpPhoto.aspx.cs添加btnAdd按钮的单击事件处理代码:
C#代码
1.private void btnAdd_Click(object sender, System.EventArgs e)
2.{
3. //获得图象并把图象转换为byte[]
4. HttpPostedFile upPhoto=UpPhoto.PostedFile;
5. int upPhotoLength=upPhoto.ContentLength;
6. byte[] PhotoArray=new Byte[upPhotoLength];
7. Stream PhotoStream=upPhoto.InputStream;
8. PhotoStream.Read(PhotoArray,0,upPhotoLength);
9.
10. //连接数据库
11. SqlConnection conn=new SqlConnection();
12. conn.ConnectionString="Data Source=localhost;Database=t
est;User Id=sa;Pwd=sa";
13.
14. SqlCommand cmd=new SqlCommand("UpdateImage",conn);
15. https://www.360docs.net/doc/fd9868534.html,mandType=CommandType.StoredProcedure;
16.
17. cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
18. cmd.Parameters["@UpdateImage"].Value=PhotoArray;
19.
20. //如果你希望不使用存储过程来添加图片把上面四句代码改
为:
21. //string strSql="Insert into test(FImage) values(@FImag
e)";
22. //SqlCommand cmd=new SqlCommand(strSql,conn);
23. //cmd.Parameters.Add("@FImage",SqlDbType.Image);
24. //cmd.Parameters["@FImage"].Value=PhotoArray;
25.
26.conn.Open();
27.cmd.ExecuteNonQuery();
28.conn.Close();
29.}
二,从SqlServer中读取并显示出来
在需要显示图片的地方添加如下代码:
C#代码
1.
ShowPhoto.aspx主体代码:
C#代码
1.private void Page_Load(object sender, System.EventArgs e)
2.{
3. if(!Page.IsPostBack)
4. {
5. SqlConnection conn=new SqlConnection()
6. conn.ConnectionString="Data Source=localhost;Da
tabase=test;User Id=sa;Pwd=sa";
7.
8. string strSql="select * from test where id=2";/
/这里假设获取id为2的图片
9. SqlCommand cmd=new SqlCommand()
10. reader.Read();
11. Response.ContentType="application/octet-stream"
;
12. Response.BinaryWrite((Byte[])reader["FImage"]);
13. Response.End();
14. reader.Close();
15. }
16.}
3,在winform中将图片存入sqlserver,并从sqlserver中读取并显示在picturebox中
1,存入sqlserver
数据库结构和使用的存储过过程,同上面的一样
1.1,在窗体中加一个OpenFileDialog控件,命名为ofdSelectPic
1.2,在窗体上添加一个打开文件按钮,添加如下单击事件代码:
C#代码
1.Stream ms;
2.byte[] picbyte;
3.//ofdSelectPic.ShowDialog();
4.if (ofdSelectPic.ShowDialog()==DialogResult.OK)
5.{
6. if ((ms=ofdSelectPic.OpenFile())!=null)
7. {
8. //MessageBox.Show("ok");
9. picbyte=new byte[ms.Length];
10. ms.Position=0;
11. ms.Read(picbyte,0,Convert.ToInt32(ms.Length));
12. //MessageBox.Show("读取完毕!");
13.
14. //连接数据库
15. SqlConnection conn=new SqlConnection();
16. conn.ConnectionString="Data Source=localhost;Database=test;
User Id=sa;Pwd=sa";
17.
18. SqlCommand cmd=new SqlCommand("UpdateImage",conn);
19. https://www.360docs.net/doc/fd9868534.html,mandType=CommandType.StoredProcedure;
20.
21. cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
22. cmd.Parameters["@UpdateImage"].Value=picbyte;
23.
24. conn.Open();
25. cmd.ExecuteNonQuery();
26. conn.Close();
27.
28. ms.Close();
29. }
30. }
2,读取并显示在picturebox中
2.1 添加一个picturebox,名为ptbShow
2.2 添加一个按钮,添加如下响应事件:
C#代码
1.SqlConnection conn=new SqlConnection();
2.conn.ConnectionString="Data Source=localhost;Database=test;User
Id=sa;Pwd=sa";
3.
4.string strSql="select FImage from test where id=1";
5.
6.SqlCommand cmd=new SqlCommand(strSql,conn);
7.
8.conn.Open();
9.SqlDataReader reader=cmd.ExecuteReader();
10. reader.Read();
11.
12.MemoryStream ms=new MemoryStream((byte[])reader["FImage"]);
13.
14.Image image=Image.FromStream(ms,true);
15.
16. reader.Close();
17. conn.Close();
18.
19.ptbShow.Image=image;