实验8: 图片处理实验
一、实验名称和性质
所属课程 |
C#数据库系统设计 |
实验名称 |
图片处理实验 |
实验学时 |
2 |
实验性质 |
✓□验证 □综合 ✓□设计 |
必做/选做 |
✓□必做 □选做 |
二、实验目的
1. 掌握数据库中对图片的存取流程及代码编写;
2.掌握图片处理中异常处理及异常的捕获;
三、实验的软硬件环境要求
硬件环境要求:
PC机(单机)
使用的软件名称、版本号以及模块:
Windows XP下的SQL Server 2005(或 SQL Server 2008)
四、知识准备
1.数据库中图片的存放流程
代码:
byte[] imagebytes = File.ReadAllBytes(openFileDialog1.FileName);
2.从数据表中取图片
代码:
SqlCommand cmd = new SqlCommand(sqlStr, conn);
conn.Open();
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
byte[] imagebytes = (byte[])sdr.GetValue (0);
MemoryStream ms = new MemoryStream(imagebytes);
pictureBox1 .Image =Image .FromStream (ms);
五、实验内容
1.
(1)界面设计
u TreeView1
Ø 显示表中图片编号
u PictureBox1
Ø 显示图片
u 按钮btnBrowsePicture
Ø 打开openFileDialog1以浏览文件,选择文件
u 按钮btnInsert
Ø 插入图片框中显示的图片到数据表中
u openFileDialog1
(2)响应事件
u TreeView1
Ø 显示表中图片编号
u PictureBox1
Ø 显示图片
u 按钮btnBrowsePicture
Ø 打开openFileDialog1以浏览文件,选择文件
u 按钮btnInsert
Ø 插入图片框中显示的图片到数据表中
u openFileDialog1
(3)
SqlConnection conn; //定义窗体级变量
Form_Load()
string connStr = "server=.;database=Student;Integrated Security=true";
conn = new SqlConnection(connStr);
string sqlStr = "select ID from testImage";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
conn.Open();
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{TreeNode tn = new TreeNode();
tn.Text = sdr[0].ToString();
treeView1.Nodes.Add(tn);}
recNumber = treeView1.Nodes.Count;
sdr.Close();
conn.Close();
(4)btnBrowsePicture_Click()
DialogResult dr = openFileDialog1.ShowDialog();
if (dr == DialogResult.OK)
{
pictureBox1.Load(openFileDialog1.FileName);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
}
(5)btnInsert_Click()
strID = "2014" + recNumber.ToString();
byte[] imagebytes = File.ReadAllBytes(openFileDialog1.FileName);
string sqlStr = "insert into testImage values('" + strID + "',@picImage)";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
cmd.Parameters.Add("@picImage", SqlDbType.VarBinary, imagebytes.Length);
cmd.Parameters["@picImage"].Value = imagebytes;
conn.Open();
cmd.ExecuteNonQuery();
recNumber += 1;
TreeNode tn = new TreeNode();
tn.Text = strID;
treeView1.Nodes.Add(tn);
MessageBox.Show("图片已插入!");
conn.Close();
(6)treeView1_AfterSelect()
SqlCommand cmd = new SqlCommand(sqlStr, conn);
conn.Open();
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
byte[] imagebytes = (byte[])sdr.GetValue (0);
MemoryStream ms = new MemoryStream(imagebytes);
pictureBox1 .Image =Image .FromStream (ms);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
4. 在学生信息表中增加photo字段,设置为VARBINARY(MAX).
编写学生信息表的详细记录维护。单击“浏览图片”要求通过文件打开对话框来在图片框来选择图片文件,并且在图片位置中显示图片文件路径且在pictureBox1中显示图片。单击“插入记录”将插入信息到学生信息表中,单击“保存修改”将当前界面上的记录内容保存到该学生信息记录中。单击“删除记录”将删除学号所对应的记录。各命令按钮的事件代码中要对异常进行处理。