我已经把图片已经更新到数据库,是独立更新的,我想让照片同像工号那样存进数据库,因为不这样的话,我第一次添加的用户,数据 都为空,只有修改才能生成二进制问题,而且这样,从数据库提取也会出现错误,
m_employee.ID = textID.Text.Trim();
m_employee.socailId = textSocailId.Text.Trim();
m_employee.entryDate = dtpEntryDate.Value.ToShortDateString().Trim();
m_employee.leaveDate = dtpLeaveDate.Value.ToShortDateString().Trim();
m_employee.email = textEmail.Text.Trim();
m_employee.comment = textComment.Text.Trim();
m_employee.photo = //该如何写,photo是image型
private void btnGetPhoto_Click(object sender, EventArgs e)
{
//System.IO.FileStream fs;
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.InitialDirectory = "D:\\";
openFileDialog.Filter = "图片文件(*.jpg,*.gif,*.bmp)|*.jpg;*.gif;*.bmp";
openFileDialog.RestoreDirectory = true;//保存当前路径
openFileDialog.FilterIndex = 1;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string fName = openFileDialog.FileName;
pbPhoto.Load(fName);//实现图片更改 //图片保存到数据库
string fullpath = openFileDialog.FileName;//文件路径
FileStream stream = new FileStream(fullpath, FileMode.Open, FileAccess.Read);
byte[] photo = new byte[(Int32)stream.Length];
stream.Read(photo, 0, photo.Length);
string strSql = string.Format("update Employee set photo = '{0}' where employeeId = '{1}'", photo,m_employeeId);
SQLServer.SQLInquiry(strSql);
stream.Close();
}我可以选择照片,有个按钮,我让他直接保存的
m_employee.ID = textID.Text.Trim();
m_employee.socailId = textSocailId.Text.Trim();
m_employee.entryDate = dtpEntryDate.Value.ToShortDateString().Trim();
m_employee.leaveDate = dtpLeaveDate.Value.ToShortDateString().Trim();
m_employee.email = textEmail.Text.Trim();
m_employee.comment = textComment.Text.Trim();
m_employee.photo = //该如何写,photo是image型
private void btnGetPhoto_Click(object sender, EventArgs e)
{
//System.IO.FileStream fs;
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.InitialDirectory = "D:\\";
openFileDialog.Filter = "图片文件(*.jpg,*.gif,*.bmp)|*.jpg;*.gif;*.bmp";
openFileDialog.RestoreDirectory = true;//保存当前路径
openFileDialog.FilterIndex = 1;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string fName = openFileDialog.FileName;
pbPhoto.Load(fName);//实现图片更改 //图片保存到数据库
string fullpath = openFileDialog.FileName;//文件路径
FileStream stream = new FileStream(fullpath, FileMode.Open, FileAccess.Read);
byte[] photo = new byte[(Int32)stream.Length];
stream.Read(photo, 0, photo.Length);
string strSql = string.Format("update Employee set photo = '{0}' where employeeId = '{1}'", photo,m_employeeId);
SQLServer.SQLInquiry(strSql);
stream.Close();
}我可以选择照片,有个按钮,我让他直接保存的
//ImageToByte(Image img) 将图片转换成二进制代码,然后存储在数据库中
public static byte[] ImageToByte(Image img)
{
byte[] byt = null;
ImageConverter imgCvt = new ImageConverter();
object obj = imgCvt.ConvertTo(img, typeof(byte[]));
byt = (byte[])obj;
return byt;
} //ByteToImage(byte[] byt)读取数据库中的二进制文件将其转换为Image
public static Image ByteToImage(byte[] bytImage)
{
Image img = null;
ImageConverter imgCvt = new ImageConverter();
object obj = imgCvt.ConvertFrom(bytImage);
img = (Image)obj;
return img;
}
//将PictureBox控件上显示的图片转化为 byte[]
int bufferSize = 0;
buffer = null;
if (this.pbPhoto.Image != null)
{
//ImageConverter im = new ImageConverter();
//buffer = (byte[])im.ConvertTo((Image)this.pbPhoto.Image, typeof(byte[]));
buffer=ImageToByte(this.pbPhoto.Image);
bufferSize = buffer.Length;
}
string sqlstr = "Update RC_Table set Name=@Name,BirthDay=@BirthDay,Sex=@Sex,ZzMm=@ZzMm,Gz=@Gz,Jl=@Jl,photo=@photo where NumCode=@NumCode"; OleDbParameter[] pa = {
new OleDbParameter("@Name",OleDbType.VarChar,20),
new OleDbParameter("@BirthDay",OleDbType.Date,8),
new OleDbParameter("@Sex",OleDbType.VarChar,2),
new OleDbParameter("@ZzMm",OleDbType.VarChar,10),
new OleDbParameter("@Gz",OleDbType.Integer,4),
new OleDbParameter("@Jl",OleDbType.VarChar,255),
new OleDbParameter("@photo",OleDbType.VarBinary,bufferSize),
new OleDbParameter("@NumCode",OleDbType.VarChar,20)
}; pa[0].Value = this.tbRCName.Text.Trim();
pa[1].Value = Convert.ToDateTime(this.tbBirth.Text);
pa[2].Value = this.cbSex.Text;
pa[3].Value = this.tbZzMm.Text.Trim();
pa[4].Value = Convert.ToInt32(this.tbGz.Text);
pa[5].Value = this.tbJl.Text.Trim();
pa[6].Value = buffer;
pa[7].Value = NumCode;
if (DataAccess.DataAccess.BuilderQueryCommand(sqlstr, pa))
{
MessageBox.Show("OK");
BindRCData();
}