目录
教学资源
教学运行
提醒实验8: 图片处理实验 返回
实验课程:
C#数据库系统开发
开课学院:
商学院
开课专业:
信息管理与信息系统
教材:
软件:
实验指导:
实验介绍

实验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();  

4btnBrowsePicture_Click()

DialogResult   dr = openFileDialog1.ShowDialog();

              if (dr == DialogResult.OK)

            {

                pictureBox1.Load(openFileDialog1.FileName);

                pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

           }

5btnInsert_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();

6treeView1_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中显示图片。单击“插入记录将插入信息到学生信息表中,单击“保存修改将当前界面上的记录内容保存到该学生信息记录中。单击“删除记录将删除学号所对应的记录。各命令按钮的事件代码中要对异常进行处理。