如何能將圖片插入到大數(shù)據(jù)庫中_第1頁
如何能將圖片插入到大數(shù)據(jù)庫中_第2頁
如何能將圖片插入到大數(shù)據(jù)庫中_第3頁
如何能將圖片插入到大數(shù)據(jù)庫中_第4頁
免費預(yù)覽已結(jié)束,剩余12頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、實用標(biāo)準(zhǔn)文案試驗十 數(shù)據(jù)庫編程1、新建項目項目名稱為“ dbgl ”。2、設(shè)計如下窗體:窗體上放置的控件有: 7 個按鈕,一個 groupBox,4 個 label ,4 個 textBox , 1 個 pictureBox 和 1 個 dataGridView 。3、編寫連接數(shù)據(jù)庫的類鼠標(biāo)單擊菜單欄上的 “項目”選擇“項目”菜單中的“添加類”命令,為“dbgl ” 項目添加連接數(shù)據(jù)庫的類,類名是: DbConnection 。如下圖所示:精彩文檔實用標(biāo)準(zhǔn)文案DbConnection 類的代碼如下圖所示:注意需要引入 System.Data.SqlClient 名稱空間。4、編寫操作數(shù)據(jù)的類為

2、“ dbgl ”項目添加操作數(shù)據(jù)的類,該類名為“DbOperation ”。首先,實例化“ DbConnection ”類,代碼如下:其次,編寫方法 getdataset ,該方法返回一個 DataSet 對象的數(shù)據(jù)集。代碼如下:接著編寫執(zhí)行 SQL語句的方法“ sqlcmd”。該方法的代碼如下:精彩文檔實用標(biāo)準(zhǔn)文案最后編寫方法“ GetTable ”,該方法用于返回一個 DataTable 類型的數(shù)據(jù)。代碼如下:5、為窗體編寫代碼,完成對數(shù)據(jù)庫操作的功能。在窗體的代碼視圖中:(1)定義一個窗體級別的 BindingManagerBase 類變量 mybind 用來管理多個控件綁定到一個數(shù)據(jù)源

3、,以便實現(xiàn)同步操作。代碼如下:(2)在窗體的 Load 事件中編寫,為相關(guān) 控件綁定相數(shù)據(jù)。代碼如下:精彩文檔實用標(biāo)準(zhǔn)文案(3)為“第一條”按鈕控件編寫代碼:代碼如下圖所示:(4)為“下一條”按鈕控件編寫代碼:代碼如下圖所示:(5)為“上一條”按鈕控件編寫代碼:代碼如下圖所示:(6)為“最后一條”按鈕控件編寫代碼:代碼(略)。自己編寫精彩文檔實用標(biāo)準(zhǔn)文案(7)給“新增”按鈕編寫代碼,完成添加一條記錄首先,給項目添加一個窗體,窗體名稱為“FormBase”。窗體中設(shè)計界面如下:該窗體的代碼如下:1)引入紅色框內(nèi)的名稱空間:2)定義窗體級變量,用來表示圖片,代碼如紅色框內(nèi):3)編寫顯示圖片的方法:

4、代碼如下:精彩文檔實用標(biāo)準(zhǔn)文案4)為“添加照片”的標(biāo)簽的單擊事件編寫如下代碼:5)為“確定”按鈕的單擊事件編寫如下代碼,保存數(shù)據(jù)到數(shù)據(jù)庫。privatevoid button1_Click(objectsender,EventArgs e)stringxh =this .textBox1.Text.Trim();stringxm =this .textBox2.Text.Trim();stringxb =this .textBox3.Text.Trim();stringjszh =this .textBox4.Text.Trim();DbOperationdbop =new DbOperati

5、on ();if(xh ="" )MessageBox.Show( " 學(xué)號不能為空!" );return ;elsestringsql ="insert into學(xué)生信息表 ( 學(xué)號 , 姓名 , 系別 , 借書證號 ) values('"+ xh +"','"+ xm +"','"+ xb +"','"+ jszh +"')"dbop.sqlcmd(sql);if(pictureName

6、!="" )精彩文檔實用標(biāo)準(zhǔn)文案DbConnection dbconn =new DbConnection ();SqlConnectionsqlconnection1 = dbconn.getcon();FileStreamstream =new FileStream (pictureName,FileMode .Open,FileAccess .Read);buffer =new byte stream.Length;stream.Read(buffer, 0, (int )stream.Length);stream.Close();/ 圖片寫入數(shù)據(jù)庫stringmyS

7、electQuery= "UPDATE 學(xué)生信息表set照片 =imgdata where 學(xué)號 ='"+ xh+"'"SqlCommandmyCommand = new SqlCommand(mySelectQuery, sqlconnection1);SqlParameterparamData =new SqlParameter ( "imgdata" ,SqlDbType.Image);paramData.Value = buffer;myCommand.Parameters.Add(paramData);myC

8、ommand.Connection.Open();myCommand.ExecuteNonQuery();* 以下是新增的內(nèi)容 *為了防止用戶連續(xù)單擊“確定”按鈕而引發(fā)異常,我們需要修改上面的代碼:修改的思路是一旦數(shù)據(jù)保存成功,就清空文本框的值。具體代碼如下:注意新增的代碼已經(jīng)加粗。privatevoid button1_Click(objectsender,EventArgs e)stringxh =this .textBox1.Text.Trim();stringxm =this .textBox2.Text.Trim();stringxb =this .textBox3.Text.Tri

9、m();stringjszh =this .textBox4.Text.Trim();DbOperationdbop =new DbOperation ();if(xh ="" )MessageBox.Show( " 學(xué)號不能為空!" );return ;elsetrystringsql ="insert into學(xué)生信息表 ( 學(xué)號 , 姓名 , 系別 , 借書證號 ) values('"+xh +"','"+ xm +"','"+ xb +"

10、','"+ jszh +"')"精彩文檔實用標(biāo)準(zhǔn)文案dbop.sqlcmd(sql);catchfinallythis .textBox1.Text ="" ;this .textBox2.Text ="" ;this .textBox3.Text ="" ;this .textBox4.Text ="" ;if(pictureName !="" )DbConnection dbconn =new DbConnection ();SqlCon

11、nectionsqlconnection1 = dbconn.getcon();FileStreamstream =new FileStream (pictureName,FileMode .Open,FileAccess .Read);buffer =new byte stream.Length;stream.Read(buffer, 0, (int )stream.Length);stream.Close();/ 圖片寫入數(shù)據(jù)庫stringmySelectQuery= "UPDATE 學(xué)生信息表set照片 =imgdata where 學(xué)號 ='"+ xh+&q

12、uot;'"SqlCommandmyCommand = new SqlCommand(mySelectQuery, sqlconnection1);SqlParameterparamData =new SqlParameter ( "imgdata" ,SqlDbType.Image);paramData.Value = buffer;myCommand.Parameters.Add(paramData);myCommand.Connection.Open();myCommand.ExecuteNonQuery();this .pictureBox1.Im

13、age =null ;6、為“關(guān)閉”按鈕編寫如下代碼,實現(xiàn)窗口關(guān)閉privatevoid button2_Click(objectsender,EventArgs e)this .Close();7、當(dāng)用戶添加完數(shù)據(jù),關(guān)閉窗口。主窗口應(yīng)該重新檢索數(shù)據(jù),把新增的數(shù)據(jù)顯示出來。為了實現(xiàn)該功能,我們返回到主窗口,找到打開 FormBase 窗口的代碼:精彩文檔實用標(biāo)準(zhǔn)文案即:privatevoid button1_Click(objectsender,EventArgs e)FormBase fb =new FormBase();fb.ShowDialog();修改上面的代碼:修改后的代碼:Form

14、Base fb =new FormBase();fb.ShowDialog();if(fb.ShowDialog() =DialogResult.Cancel)/ 重新綁定數(shù)據(jù)DbOperationdbopt =new DbOperation ();stringsql ="select * from學(xué)生信息表 " ;DataTable db = dbopt.GetTable(sql);dataGridView1.DataSource = db;/ 當(dāng)單擊某一單元格時,選中該行this.dataGridView1.SelectionMode =DataGridViewSele

15、ctionMode .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," 學(xué)號");this.textBox2.DataBindings.Add(&quo

16、t;text", db," 姓名");this.textBox3.DataBindings.Add("text", db," 系別");this.textBox4.DataBindings.Add("text", db," 借書證號 " );/this.pictureBox1.DataBindings.Add("text", db, "照片 ");8、在主窗口中為了能夠正確顯示圖片,我們需要增加一個 imageview() 方法來顯示圖片。該方法

17、屬于窗體。方法的代碼如下:privatevoid imageview()pictureBox1.SizeMode =PictureBoxSizeMode .StretchImage;/圖片顯示模式DbConnection connstr =new DbConnection ();SqlConnectionconn = connstr.getcon();conn.Open();SqlCommandcmd =new SqlCommand( "select照片 from學(xué)生信息表where學(xué)號 ='"+this .textBox1.Text.Trim() +"&

18、#39;", conn);trybyte b = (byte )cmd.ExecuteScalar();if(b.Length > 0)精彩文檔實用標(biāo)準(zhǔn)文案MemoryStream stream =new MemoryStream(b,true );stream.Write(b, 0, b.Length);pictureBox1.Image =new Bitmap (stream);stream.Close();elsepictureBox1.Refresh();catchfinallycmd.Connection.Close();conn.Close();有了該方法后,我們需

19、要在其他地方調(diào)用該方法。需要調(diào)用的地方有: 注意要加代碼的地方已經(jīng)加粗。( 1)privatevoid Form1_Load( objectsender,EventArgs e)/ 為 dataGridView1 綁定數(shù)據(jù)DbOperationdbopt =new DbOperation ();stringsql ="select * from學(xué)生信息表 " ;DataTable db = dbopt.GetTable(sql);dataGridView1.DataSource = db;/ 當(dāng)單擊某一單元格時,選中該行this.dataGridView1.Selectio

20、nMode =DataGridViewSelectionMode .FullRowSelect;mybind =this .BindingContextdb;this.textBox1.DataBindings.Add("text", db," 學(xué)號");this.textBox2.DataBindings.Add("text", db," 姓名");this.textBox3.DataBindings.Add("text", db," 系別");this.textBox4.

21、DataBindings.Add("text", db," 借書證號 " );/this.pictureBox1.DataBindings.Add("text", db, "照片 ");imageview();( 2)privatevoid button4_Click(objectsender,EventArgs e)精彩文檔實用標(biāo)準(zhǔn)文案pictureBox1.Image =null ;if(mybind.Position = 0)MessageBox.Show( " 已經(jīng)是第一條了!" );r

22、eturn ;elsemybind.Position = 0;imageview();privatevoid button5_Click(objectsender,EventArgs e)pictureBox1.Image =null ;if(mybind.Position = (mybind.Count-1)MessageBox.Show( " 已經(jīng)是最后一條了!" );return ;elsemybind.Position = mybind.Position+1;imageview();privatevoid button6_Click(objectsender,Eve

23、ntArgs e)pictureBox1.Image =null ;if(mybind.Position = 0)MessageBox.Show( " 已經(jīng)是第一條了!" );return ;elsemybind.Position = mybind.Position - 1;imageview();(3)privatevoid button1_Click(objectsender,EventArgs e)FormBase fb =new FormBase();精彩文檔實用標(biāo)準(zhǔn)文案fb.ShowDialog();if(fb.ShowDialog() =DialogResult

24、.Cancel)/ 重新綁定數(shù)據(jù)DbOperationdbopt =new DbOperation ();stringsql ="select * from學(xué)生信息表 " ;DataTable db = dbopt.GetTable(sql);dataGridView1.DataSource = db;/ 當(dāng)單擊某一單元格時,選中該行this.dataGridView1.SelectionMode =DataGridViewSelectionMode .FullRowSelect;mybind =this .BindingContextdb;this.textBox1.Da

25、taBindings.Clear();this.textBox2.DataBindings.Clear();this.textBox3.DataBindings.Clear();this.textBox4.DataBindings.Clear();this.textBox1.DataBindings.Add("text", db," 學(xué)號");this.textBox2.DataBindings.Add("text", db," 姓名");this.textBox3.DataBindings.Add("t

26、ext", db," 系別");this.textBox4.DataBindings.Add("text", db," 借書證號 " );imageview();到目前為止, 添加記錄已經(jīng)差不多了, 如果還 bug 的話,希望同學(xué)們自己動手去修改。接下來我們要做數(shù)據(jù)的編輯。(9)當(dāng)我們單擊 “編輯” 按鈕或或雙擊 dataGridView1 的一行時,打開編輯記錄窗口。實現(xiàn)步驟如下:首先,給項目添加一個窗體,窗體名稱為“FormEdit ”。窗體中設(shè)計界面如下精彩文檔實用標(biāo)準(zhǔn)文案為了能夠傳遞參數(shù),我們編寫一個靜態(tài)類 info

27、 ,向項目中添加一個類,類名是: info為類 info編寫代碼:代碼如下:其次、雙擊“編輯”按鈕編寫如下代碼:接下來我們在編輯窗口的Load事件中編寫如下代碼:privatevoid FormEdit_Load(objectsender,EventArgs e)this .textBox1.Text =info .xh;this .textBox1.Enabled =false ; / 學(xué)號不能修改精彩文檔實用標(biāo)準(zhǔn)文案this.textBox2.Text =info.xm;this.textBox3.Text =info.xb;this.textBox4.Text =info.jszh;th

28、is.textBox4.Enabled =false ; / 借書證號不能修改info.xh ="" ;info.xm =""info.xb =""info.jszh ="" ;/ 下面的代碼獲得圖片pictureBox1.SizeMode =PictureBoxSizeMode .StretchImage;DbConnection connstr =new DbConnection ();SqlConnectionconn = connstr.getcon();conn.Open();SqlCommandcmd

29、=new SqlCommand( "select照片 from學(xué)生信息表where學(xué)號 ='"+this .textBox1.Text.Trim() +"'", conn);trybyte b = (byte )cmd.ExecuteScalar();if(b.Length > 0)MemoryStream stream =new MemoryStream(b,true );stream.Write(b, 0, b.Length);pictureBox1.Image =new Bitmap (stream);stream.Close

30、();elsepictureBox1.Refresh();catch/MessageBox.Show(ex.ToString();/MessageBox.Show("該學(xué)生還沒有附件掃描哦!");finallycmd.Connection.Close();conn.Close();精彩文檔實用標(biāo)準(zhǔn)文案為了保存數(shù)據(jù)先定義窗體變量用來保存圖片:他們是:然后編寫一個函數(shù)用來顯示圖片為“修改圖片”標(biāo)簽編寫打開圖片代碼:最后,為編輯窗口的“確定”按鈕編寫代碼保存數(shù)據(jù)privatevoid button1_Click(objectsender,EventArgs e)stringsql

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論