private void button1_Click(object sender, EventArgs e)
{
Stream ms;
byte[] picbyte;
OpenFileDialog ofdSelectPic = new OpenFileDialog();
ofdSelectPic.ShowDialog();
ms = ofdSelectPic.OpenFile();
picbyte = new byte[ms.Length];
ms.Position = 0;
ms.Read(picbyte, 0, Convert.ToInt32(ms.Length)); SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=;database=库");
conn.Open();
string sqlstring = "UPDATE 表 SET 字段 = (@img) WHERE ...";
SqlCommand cmd = new SqlCommand(sqlstring, conn);
cmd.Parameters.Add("@img", SqlDbType.Image, picbyte.Length).Value = picbyte;
cmd.ExecuteNonQuery();
conn.Close();
}
/// 把image对象保存到数据库中
/// </summary>
/// <param name="ConnStr">连接字符串</param>
/// <param name="TableName">表名</param>
/// <param name="KeyFieldName">关键字名</param>
/// <param name="KeyValue">关键字值</param>
/// <param name="PhotoFieldName">要更改的image类型列名</param>要更改的image类型列名
/// <param name="PhotoFieldValue">要更改的image类型值</param>
/// <returns></returns>
private bool SetImageToDb(string ConnStr, string TableName,string KeyFieldName, string KeyValue,string PhotoFieldName,Image PhotoFieldValue)
{
if (PhotoFieldValue != null)
{
try
{
Bitmap bmp = new Bitmap(PhotoFieldValue);
MemoryStream ms = new MemoryStream();
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
Byte[] sdt = ms.ToArray(); SqlConnection conn = new SqlConnection(ConnStr);
conn.Open();
string strsql="Update "+TableName+ " Set "+PhotoFieldName+"=@photo "+ " where "+KeyFieldName +"="+KeyValue;
SqlCommand cmd = new SqlCommand(strsql, conn);
cmd.Parameters.Add("@photo",SqlDbType.Image);
cmd.Parameters["@photo"].Value=sdt;
cmd.ExecuteNonQuery();
cmd=null;
conn.Close();
MessageBox.Show("图象已成功保存到数据库");
return true;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(),ex.Message);
return false;
}
}
else
{
MessageBox.Show("图片参数(image)不能为空");
return false;
}
}调用上面的函数即可。
private void btn_Change_Click(object sender, EventArgs e)
{
Image img = this.pictureBox1.Image;
SetImageToDb("Server=(Local);Uid=Sa;Pwd=;DataBase=库名", "GuestPhoto", "Id", textBox1.Text, "Photo", img);
}