NET 下数据库图片的存入与读取

据库结构
create table test
{
  id int identity(1,1),
  FImage image
}

 
相关的存储过程
Create proc UpdateImage (@UpdateImage Image)
As
Insert Into test (FImage) values (@UpdateImage)
GO

 
OpenFileDialog openfileDialog = new OpenFileDialog();
openfileDialog.Filter = "Picture Files(*.jpg)|*.jpg|Bmp(*.bmp)|*.bmp|All Files(*.*)|*.*";
FileStream fileStream;
openfileDialog.ShowDialog();
string filepath = openfileDialog.FileName;
if (filepath.Trim() != "")
{
  //获得图象并把图象转换为byte[]
  fileStream = new FileStream(filepath, FileMode.Open,  FileAccess.Read);
  byte[] photoArray = new byte[(int)fileStream.Length];
  fileStream.Read(photoArray, 0, photoArray.Length);
  fileStream.Close();
  try
  {
     pictureBox1.SizeMode = PictureBoxSizeMode.Normal;
     pictureBox1.Image = System.Drawing.Image.FromFile(filepath);
  }
  catch (Exception ex)
  {
     MessageBox.Show(ex.Message);
  }
  //连接数据库
  SqlConnection myConnection = new SqlConnection();
  myConnection.ConnectionString ="Data Source=localhost;Database=test;User Id=sa;Pwd=sa";
  SqlCommand mySqlCommand = new SqlCommand("UpdateImage", myConnection);
  mySqlCommand.CommandType = CommandType.StoredProcedure;
  mySqlCommand.Parameters.Add("@UpdateImage", SqlDbType.Image);
  mySqlCommand.Parameters["@UpdateImage"].Value = photoArray;
  //如果不使用存储过程,可以把上面四句代码改为:
  //string strSql="Insert into test(FImage) values(@FImage)";
  //SqlCommand cmd=new SqlCommand(strSql,conn);
  //cmd.Parameters.Add("@FImage",SqlDbType.Image);
  //cmd.Parameters["@FImage"].Value=photoArray;
  myConnection.Open();
  mySqlCommand.ExecuteNonQuery();
  myConnection.Close();
}
//以下是从数据库读取图片
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=localhost;Database=test;User Id=sa;Pwd=sa";
string strSql = "select FImage from test where id=1";
SqlCommand cmd = new SqlCommand(strSql, conn);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
reader.Read();
MemoryStream ms = new MemoryStream((byte[])reader["FImage"]);
System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true);
reader.Close();
conn.Close();
pictureBox1.Image = image;
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值