如何能将图片插入到大数据库中

上传人:无*** 文档编号:101221953 上传时间:2022-06-04 格式:DOC 页数:16 大小:281KB
收藏 版权申诉 举报 下载
如何能将图片插入到大数据库中_第1页
第1页 / 共16页
如何能将图片插入到大数据库中_第2页
第2页 / 共16页
如何能将图片插入到大数据库中_第3页
第3页 / 共16页
资源描述:

《如何能将图片插入到大数据库中》由会员分享,可在线阅读,更多相关《如何能将图片插入到大数据库中(16页珍藏版)》请在装配图网上搜索。

1、word试验 十 数据库编程1、新建项目 项目名称为“dbgl。2、设计如下窗体:窗体上放置的控件有:7个按钮,一个groupBox,4个label,4个textBox,1个pictureBox和1个dataGridView。3、编写连接数据库的类 鼠标单击菜单栏上的“项目选择“项目菜单中的“添加类命令,为“dbgl项目添加连接数据库的类,类名是:DbConnection。如如下图所示:DbConnection类的代码如如下图所示:注意需要引入System.Data.SqlClient名称空间。4、编写操作数据的类为“dbgl项目添加操作数据的类,该类名为“DbOperation。 首先,实例

2、化“DbConnection类,代码如下:其次,编写方法getdataset,该方法返回一个DataSet对象的数据集。代码如下:接着编写执行SQL语句的方法“sqlcmd。该方法的代码如下:最后编写方法“GetTable,该方法用于返回一个DataTable类型的数据。代码如下:5、为窗体编写代码,完成对数据库操作的功能。在窗体的代码视图中:1定义一个窗体级别的BindingManagerBase类变量mybind用来管理多个控件绑定到一个数据源,以便实现同步操作。代码如下:2在窗体的Load事件中编写,为相关控件绑定相数据。代码如下:3为“第一条按钮控件编写代码:代码如如下图所示:4为“下

3、一条按钮控件编写代码:代码如如下图所示:5为“上一条按钮控件编写代码:代码如如下图所示:6为“最后一条按钮控件编写代码:代码略。自己编写7给“新增按钮编写代码,完成添加一条记录首先,给项目添加一个窗体,窗体名称为“FormBase。窗体中设计界面如下: 该窗体的代码如下: 1引入红色框内的名称空间:2定义窗体级变量,用来表示图片,代码如红色框内:3编写显示图片的方法:代码如下:4为“添加照片的标签的单击事件编写如下代码:5为“确定按钮的单击事件编写如下代码,保存数据到数据库。privatevoid button1_Click(object sender, EventArgs e) string

4、 xh = this.textBox1.Text.Trim();string xm = this.textBox2.Text.Trim();string xb = this.textBox3.Text.Trim();string jszh = this.textBox4.Text.Trim();DbOperation dbop = newDbOperation();if (xh = ) MessageBox.Show(学号不能为空!);return; else string sql = insert into 学生信息表(学号,某某,系别,借书证号) values( + xh + , + xm

5、 + , + xb + , + jszh + ); dbop.sqlcmd(sql); if (pictureName != ) DbConnection dbconn = newDbConnection();SqlConnection sqlconnection1 = dbconn.getcon();FileStream stream = newFileStream(pictureName, FileMode.Open, FileAccess.Read); buffer = newbytestream.Length; stream.Read(buffer, 0, (int)stream.Le

6、ngth); stream.Close();/图片写入数据库string mySelectQuery = UPDATE 学生信息表 set 照片=imgdata where 学号= + xh + ;Sqlmand mymand = newSqlmand(mySelectQuery, sqlconnection1);SqlParameter paramData = newSqlParameter(imgdata, SqlDbType.Image); paramData.Value = buffer; mymand.Parameters.Add(paramData); mymand.Connect

7、ion.Open(); mymand.ExecuteNonQuery(); *以下是新增的内容*为了防止用户连续单击“确定按钮而引发异常,我们需要修改上面的代码:修改的思路是一旦数据保存成功,就清空文本框的值。具体代码如下:注意新增的代码已经加粗。privatevoid button1_Click(object sender, EventArgs e) string xh = this.textBox1.Text.Trim();string xm = this.textBox2.Text.Trim();string xb = this.textBox3.Text.Trim();string j

8、szh = this.textBox4.Text.Trim();DbOperation dbop = newDbOperation();if (xh = ) MessageBox.Show(学号不能为空!);return; else try string sql = insert into 学生信息表(学号,某某,系别,借书证号) values( + xh + , + xm + , + xb + , + jszh + ); dbop.sqlcmd(sql); catch finally this.textBox1.Text = ;this.textBox2.Text = ;this.textB

9、ox3.Text = ;this.textBox4.Text = ; if (pictureName != ) DbConnection dbconn = newDbConnection();SqlConnection sqlconnection1 = dbconn.getcon();FileStream stream = newFileStream(pictureName, FileMode.Open, FileAccess.Read); buffer = newbytestream.Length; stream.Read(buffer, 0, (int)stream.Length); st

10、ream.Close();/图片写入数据库string mySelectQuery = UPDATE 学生信息表 set 照片=imgdata where 学号= + xh + ;Sqlmand mymand = newSqlmand(mySelectQuery, sqlconnection1);SqlParameter paramData = newSqlParameter(imgdata, SqlDbType.Image); paramData.Value = buffer; mymand.Parameters.Add(paramData); mymand.Connection.Open(

11、); mymand.ExecuteNonQuery();this.pictureBox1.Image = null; 6、为“关闭按钮编写如下代码,实现窗口关闭privatevoid button2_Click(object sender, EventArgs e) this.Close(); 7、当用户添加完数据,关闭窗口。主窗口应该重新检索数据,把新增的数据显示出来。为了实现该功能,我们返回到主窗口,找到打开FormBase窗口的代码:即:privatevoid button1_Click(object sender, EventArgs e) FormBase fb = newFormB

12、ase(); fb.ShowDialog(); 修改上面的代码: 修改后的代码: FormBase fb = newFormBase(); fb.ShowDialog();if (fb.ShowDialog() = DialogResult.Cancel) /重新绑定数据DbOperation dbopt = newDbOperation();string sql = select * from 学生信息表;DataTable db = dbopt.GetTable(sql); dataGridView1.DataSource = db;/当单击某一单元格时,选中该行this.dataGrid

13、View1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; mybind = this.BindingContextdb;this.textBox1.DataBindings.Clear();this.textBox2.DataBindings.Clear();this.textBox3.DataBindings.Clear();this.textBox4.DataBindings.Clear();this.textBox1.DataBindings.Add(text, db, 学号);this.textBox2.DataBin

14、dings.Add(text, db, 某某);this.textBox3.DataBindings.Add(text, db, 系别);this.textBox4.DataBindings.Add(text, db, 借书证号);/this.pictureBox1.DataBindings.Add(text, db, 照片); 8、在主窗口中为了能够正确显示图片,我们需要增加一个imageview()方法来显示图片。该方法属于窗体。方法的代码如下:privatevoid imageview() pictureBox1.SizeMode = PictureBoxSizeMode.Stretch

15、Image;/图片显示模式DbConnection connstr = newDbConnection();SqlConnection conn = connstr.getcon(); conn.Open();Sqlmand cmd = newSqlmand(select 照片 from 学生信息表 where 学号= + this.textBox1.Text.Trim() + , conn);try byte b = (byte)cmd.ExecuteScalar();if (b.Length 0) MemoryStream stream = newMemoryStream(b, true)

16、; stream.Write(b, 0, b.Length); pictureBox1.Image = newBitmap(stream); stream.Close(); else pictureBox1.Refresh(); catch finally cmd.Connection.Close(); conn.Close(); 有了该方法后,我们需要在其他地方调用该方法。需要调用的地方有: 注意要加代码的地方已经加粗。1privatevoid Form1_Load(object sender, EventArgs e) /为dataGridView1绑定数据DbOperation dbop

17、t = newDbOperation();string sql = select * from 学生信息表;DataTable db = dbopt.GetTable(sql); dataGridView1.DataSource = db;/当单击某一单元格时,选中该行this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; mybind = this.BindingContextdb;this.textBox1.DataBindings.Add(text, db, 学号);this.textBox2

18、.DataBindings.Add(text, db, 某某);this.textBox3.DataBindings.Add(text, db, 系别);this.textBox4.DataBindings.Add(text, db, 借书证号);/this.pictureBox1.DataBindings.Add(text, db, 照片); imageview(); 2privatevoid button4_Click(object sender, EventArgs e) pictureBox1.Image = null;if (mybind.Position = 0) MessageB

19、ox.Show(已经是第一条了!);return; else mybind.Position = 0; imageview(); privatevoid button5_Click(object sender, EventArgs e) pictureBox1.Image = null;if (mybind.Position = (mybind.Count-1) MessageBox.Show(已经是最后一条了!);return; else mybind.Position = mybind.Position+1;imageview(); privatevoid button6_Click(ob

20、ject sender, EventArgs e) pictureBox1.Image = null;if (mybind.Position = 0) MessageBox.Show(已经是第一条了!);return; else mybind.Position = mybind.Position - 1;imageview(); 3privatevoid button1_Click(object sender, EventArgs e) FormBase fb = newFormBase(); fb.ShowDialog();if (fb.ShowDialog() = DialogResult

21、.Cancel) /重新绑定数据DbOperation dbopt = newDbOperation();string sql = select * from 学生信息表;DataTable db = dbopt.GetTable(sql); dataGridView1.DataSource = db;/当单击某一单元格时,选中该行this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; mybind = this.BindingContextdb;this.textBox1.DataBindings

22、.Clear();this.textBox2.DataBindings.Clear();this.textBox3.DataBindings.Clear();this.textBox4.DataBindings.Clear();this.textBox1.DataBindings.Add(text, db, 学号);this.textBox2.DataBindings.Add(text, db, 某某);this.textBox3.DataBindings.Add(text, db, 系别);this.textBox4.DataBindings.Add(text, db, 借书证号);imag

23、eview(); 到目前为止,添加记录已经差不多了,如果还bug的话,希望同学们自己动手去修改。接下来我们要做数据的编辑。 9当我们单击“编辑按钮或或双击dataGridView1的一行时,打开编辑记录窗口。实现步骤如下:首先,给项目添加一个窗体,窗体名称为“FormEdit。窗体中设计界面如下为了能够传递参数,我们编写一个静态类info,向项目中添加一个类,类名是:info为类info编写代码:代码如下:其次、双击“编辑按钮编写如下代码:接下来我们在编辑窗口的Load事件中编写如下代码:privatevoid FormEdit_Load(object sender, EventArgs e)

24、 this.textBox1.Text = info.xh;this.textBox1.Enabled = false;/学号不能修改this.textBox2.Text = info.xm;this.textBox3.Text = info.xb;this.textBox4.Text = info.jszh;this.textBox4.Enabled = false;/借书证号不能修改info.xh = ;info.xm = ;info.xb = ;info.jszh = ;/下面的代码获得图片 pictureBox1.SizeMode = PictureBoxSizeMode.Stretc

25、hImage;DbConnection connstr = newDbConnection();SqlConnection conn = connstr.getcon(); conn.Open();Sqlmand cmd = newSqlmand(select 照片 from 学生信息表 where 学号= + this.textBox1.Text.Trim() + , conn);try byte b = (byte)cmd.ExecuteScalar();if (b.Length 0) MemoryStream stream = newMemoryStream(b, true); stre

26、am.Write(b, 0, b.Length); pictureBox1.Image = newBitmap(stream); stream.Close(); else pictureBox1.Refresh(); catch /MessageBox.Show(ex.ToString();/MessageBox.Show(该学生还没有附件扫描哦!); finally cmd.Connection.Close(); conn.Close(); 为了保存数据先定义窗体变量用来保存图片:他们是:然后编写一个函数用来显示图片为“修改图片标签编写打开图片代码:最后,为编辑窗口的“确定按钮编写代码保存数

27、据privatevoid button1_Click(object sender, EventArgs e) string sql = update 学生信息表 set 某某= + textBox2.Text + ,系别= + textBox3.Text + where 学号= + textBox1.Text.Trim() + ;DbOperation dbop = newDbOperation(); dbop.sqlcmd(sql);if (pictureName != ) DbConnection dbconn = newDbConnection();SqlConnection sqlco

28、nnection1 = dbconn.getcon();FileStream stream = newFileStream(pictureName, FileMode.Open, FileAccess.Read); buffer = newbytestream.Length; stream.Read(buffer, 0, (int)stream.Length); stream.Close();/图片写入数据库string mySelectQuery = UPDATE 学生信息表 set 照片=imgdata where 学号= + textBox1.Text.Trim() + ;Sqlmand

29、 mymand = newSqlmand(mySelectQuery, sqlconnection1);SqlParameter paramData = newSqlParameter(imgdata, SqlDbType.Image); paramData.Value = buffer; mymand.Parameters.Add(paramData); mymand.Connection.Open(); mymand.ExecuteNonQuery();this.pictureBox1.Image = null; MessageBox.Show(数据修改成功!); 10、删除记录请同学自己完成。16 / 16

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!