namespace ImageTest
{
public partial class Form1 : Form
{
private BindingSource bindsrc;
private DataTable tbl;
private string strConnectSqlServer;
private ImageFormat currentFormat;
public Form1()
{
InitializeComponent();
this.sPhotoData.SizeMode = PictureBoxSizeMode.StretchImage;
this.bindsrc = new BindingSource();
this.bindsrc.CurrentItemChanged += new EventHandler(bindsrc_CurrentItemChanged);
//设置SqlServer连接串
SqlConnectionStringBuilder strBuilder = new SqlConnectionStringBuilder();
strBuilder.DataSource = "127.0.0.1";
strBuilder.InitialCatalog = "mail";
strBuilder.IntegratedSecurity = true;
this.strConnectSqlServer = strBuilder.ToString();
this.btnReresh_Click(null, null);
this.btnOpen.Enabled = false;
}
private void bindsrc_CurrentItemChanged(object sender, EventArgs e)
{
//刷新界面显示
DataRowView rowView = this.bindsrc.Current as DataRowView;
if (rowView == null) { return; }
this.sPhotoId.Text = rowView["PhotoId"].ToString();
this.sPhotoDesc.Text = rowView["PhotoDesc"].ToString();
if (rowView["PhotoData"] == null || rowView["PhotoData"] == DBNull.Value)
{
return;
}
using(MemoryStream ms = new MemoryStream((byte[])rowView["PhotoData"]))
try
{
this.sPhotoData.Image = Image.FromStream(ms);
}
finally
{
ms.Close();
}
}
private void btnReresh_Click(object sender, EventArgs e)
{
//数据查询
using (SqlConnection con = new SqlConnection(this.strConnectSqlServer))
{
string strSelect = "select * from dbo.myPhoto";
SqlDataAdapter adapter = new SqlDataAdapter(strSelect, con);
this.tbl = new DataTable();
adapter.Fill(this.tbl);
}
//设置界面显示
this.bindsrc.DataSource = this.tbl;
this.dataGridView1.DataSource = this.bindsrc;
}
private void btnAddSave_Click(object sender, EventArgs e)
{
//将图像读入到字节数组
byte[] buffByte;
using(MemoryStream ms = new MemoryStream())
try
{
this.sPhotoData.Image.Save(ms, this.currentFormat); ;
//buffByte = new byte[ms.Length];
//ms.Read(buffByte, 0, (int)ms.Length);
buffByte = ms.GetBuffer();
}
finally
{
ms.Close();
}
//数据保存
using (SqlConnection con = new SqlConnection(this.strConnectSqlServer))
{
string strInsert = @"
INSERT INTO dbo.myPhoto(RId, photoId, photoDesc, photoData)
VALUES(NEWID(), @photoId, @photoDesc, @photoData)";
SqlCommand cmd = new SqlCommand(strInsert, con);
cmd.Parameters.Add("@photoId", SqlDbType.NVarChar);
cmd.Parameters.Add("@photoDesc", SqlDbType.NVarChar);
cmd.Parameters.Add("@photoData", SqlDbType.Image);
cmd.Parameters["@photoId"].Value = this.sPhotoId.Text;
cmd.Parameters["@photoDesc"].Value = this.sPhotoDesc.Text;
cmd.Parameters["@photoData"].Value = buffByte;
con.Open();
MessageBox.Show("影响" + cmd.ExecuteNonQuery().ToString()+"行");
con.Close();
}
}
private void btnEditSave_Click(object sender, EventArgs e)
{
}
private void btnOpenPicture_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
//确定类型
if (this.sImageFormat.SelectedIndex <= 0)
{
MessageBox.Show("请选择类型", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
//JPG BMP GIF PNG
switch (this.sImageFormat.SelectedItem.ToString())
{
case "JPG":
this.currentFormat = ImageFormat.Jpeg;
break;
case "BMP":
this.currentFormat = ImageFormat.Bmp;
break;
case "GIF":
this.currentFormat = ImageFormat.Gif;
break;
case "PNG":
this.currentFormat = ImageFormat.Png;
break;
}
if (dlg.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; }
string pathName = dlg.FileName;
this.sPhotoData.Image = System.Drawing.Image.FromFile(pathName);
}
private void sImageFormat_SelectedIndexChanged(object sender, EventArgs e)
{
this.btnOpen.Enabled = this.sImageFormat.SelectedIndex > 0;
}
}
}
posted on 2012-03-08 00:15
Victor.Stone 阅读(221)
评论(0) 编辑 收藏 引用 所属分类:
.net framework