1.首先添加一个PictureBox控件和两个Button控件
2.连接数据库的代码在此不再赘述,在我的博文ADO.NET中已经详细介绍
3.上传图片按钮的点击事件:
//上传图片点击按钮代码
bool isUpLoadPicture; //是否上传图片,用于在点击保存时,判断是否有图片,如果有则添加图片路径到
string empUpLoadPictureFormat; //上传的图片的后缀名
private void button1_Click(object sender, EventArgs e)
{
try
{
openFileDialog1.Filter = "*.jpg|*.jpg|*.png|*.png|*.bmp|*.bmp|*.tiff|*.tiff";//图片格式
if (openFileDialog1.ShowDialog() == DialogResult.OK) //打开文件会话窗口
{
isUpLoadPicture=true;//记录是否上传了相片,用于后面保存操作使用:是一个成员变量
try
{
string empUpLoadPictureRealPos = openFileDialog1.FileName;//物理路径:实际的文件路径+文件名
String[] empImageData = empUpLoadPictureRealPos.Split('.');
//empImageData[1]:是上传的图片的后缀名
empUpLoadPictureFormat = empImageData[1];
pictureBox1.Image= Image.FromFile(empUpLoadPictureRealPos);//将图片显示在pitureBox控件中
}
catch
{
MessageBox.Show("您选择的图片不能被读取或文件类型不对!", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
catch (System.Exception ex)
{
MessageBox.Show("上传相片出错: " + ex.Message);
}
}
4.保存 按钮的点击事件:
private void button2_Click(object sender, EventArgs e)
{
String empImageName = "";
//开始保存:需要根据是否上传了员工相片保存员工相片
if (isUpLoadPicture == true)
{
//说明上传了相片
//设置员工相片的名字:以系统当前时间毫秒来命名
empImageName = DateTime.Now.Ticks /10000 + "." + empUpLoadPictureFormat;
File.Copy(openFileDialog1.FileName, Application.StartupPath + "\\images\\" + empImageName );
string str2 = Application.StartupPath + "\\images\\" + empImageName;
//将路径保存到数据库中
try
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "update tb_Emp set emp_Image='" + str2 + "'where emp_Id=0";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
int a = cmd.ExecuteNonQuery(); ;
conn.Close();
}
catch (Exception ex)
{
}
}
else
{
//没有上传相片
empImageName = "default.jpg";
}
}
5.在加载窗体时,就直接读取路径加载到PictureBox中:
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select emp_Image from tb_Emp where emp_Id=0";
cmd.Connection = conn;
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
DataTable dt = new DataTable();
sda.Fill(dt);
string imagePath=(string)dt.Rows[0]["emp_Image"];
MessageBox.Show(imagePath);
pictureBox1.ImageLocation = imagePath;//加载图片用ImageLocation
conn.Close();
图片的自适应大小是PictureBox的SizeMode属性
6.在数据库中要有相应的图片路径字段,现在实现的是完全限定名路径的存储,不是相对路径,在数据库中的路径是这样的:
"F:\\VS\\WindowsFormsApplication1\\WindowsFormsApplication1\\bin\\Debug\\images\\63666232294340.jpg"