您的位置:首页 > 数据库

C#Winform在数据库中读取图片文件和上传数据文件

2016-02-24 23:08 537 查看
读取数据库图片字段方法:
protected void LoadPicture()
{
Image img = null;

if (this.gl_studentid.Length==0)
{
img = Image.FromFile("NoPicture.png");//如果数据库中没有图片则加载NoPicture.png这张图片
this.pictureBox1.Image = img;
return;
}

string sql = "select * from student where studentid='" + gl_studentid + "'";

DataTable dt = DBUtil.GetData(sql);

if (dt.Rows.Count>0)
{
try  //用try 做判断 ,因为转化过程可能出错
{
byte[] bytes = (byte[])dt.Rows[0]["img"];

MemoryStream ms = new MemoryStream(bytes);  //核心方法  将图片加载到内存流中

this.pictureBox1.Image = Image.FromStream(ms);

}
catch (Exception)
{
img = Image.FromFile("NoPicture.png");

this.pictureBox1.Image=img;
}
}
}
向数据库中上传图片文件方法:(这里方便采用修改数据库的图片文件,原理相同)
private void btnSubmit_Click(object sender, EventArgs e)
{
string filePath = this.txtFilePath.Text.ToString();

if (filePath.Length==0)
{
MessageBox.Show("请选择图片!");
return;
}
if (gl_studentid.Length==0)
{
MessageBox.Show("请选择要修改的记录!");
}

string sql = "update student set img=@img where studentid=@studentid";

SqlParameter p1 = new SqlParameter("@img", SqlDbType.Image);

FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
byte[] bytes = new byte[fs.Length];
fs.Seek(0, SeekOrigin.Begin);  //定义开始读文件的位置,为0位置  SeekOrigin.Begin意为设置0为一个开始标志位
fs.Read(bytes, 0, (int)fs.Length);
p1.Value = bytes;

SqlParameter p2 = new SqlParameter("@studentid", gl_studentid);

using (SqlConnection conn=new SqlConnection(sqlconn))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = sql;
cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);

cmd.ExecuteNonQuery();

fs.Close();
fs.Dispose();

MessageBox.Show("图片修改成功!");

this.LoadPicture();

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: