似水无痕

http://www.fushunboy.com, http://www.kunet.cn, http://www.gotdotnet.cn
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

用C#把图片存到SQL server数据库中

Posted on 2006-01-05 23:50  似水无痕  阅读(2574)  评论(0编辑  收藏  举报
  1//在SQL中建一个库为:sjData 一人表:mytb  字段:"pc" 类型为:image  ,"name"  类型为:text   
  2
  3using System; 
  4using System.Drawing; 
  5using System.Collections; 
  6using System.ComponentModel; 
  7using System.Windows.Forms; 
  8using System.Data; 
  9using System.Text; 
 10using System.IO; 
 11using System.Data.SqlClient; 
 12namespace 记取图片 
 13
 14   /// <summary> 
 15   /// Form1 的摘要说明。 
 16   /// </summary> 

 17   public class Form1 : System.Windows.Forms.Form 
 18   
 19      string myname; 
 20      DateTime mydt=DateTime.Now; 
 21      private System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1; 
 22      private 记取图片.DataSet1 dataSet11; 
 23      private System.Windows.Forms.Button button1; 
 24      private System.Windows.Forms.Button button2; 
 25      private System.Windows.Forms.Button button3; 
 26      private System.Windows.Forms.TextBox textBox1; 
 27      private System.Windows.Forms.PictureBox pictureBox1; 
 28      private System.Windows.Forms.OpenFileDialog ofdSelectPic; 
 29      private System.Data.SqlClient.SqlConnection sqlConnection1; 
 30      private System.Data.SqlClient.SqlCommand sqlSelectCommand1; 
 31      private System.Data.SqlClient.SqlCommand sqlInsertCommand1; 
 32      private System.Data.SqlClient.SqlCommand sqlUpdateCommand1; 
 33      private System.Data.SqlClient.SqlCommand sqlDeleteCommand1; 
 34      private System.Windows.Forms.Label label1; 
 35      private System.Windows.Forms.Button button4; 
 36      private System.Windows.Forms.Button button5; 
 37      private System.Windows.Forms.Button button6; 
 38      /// <summary> 
 39      /// 必需的设计器变量。 
 40      /// </summary> 

 41      private System.ComponentModel.Container components = null
 42
 43      public Form1() 
 44      
 45         // 
 46         // Windows 窗体设计器支持所必需的 
 47         // 
 48         InitializeComponent(); 
 49
 50         // 
 51         // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 
 52         // 
 53      }
 
 54
 55      /// <summary> 
 56      /// 清理所有正在使用的资源。 
 57      /// </summary> 

 58      protected override void Dispose( bool disposing ) 
 59      
 60         if( disposing ) 
 61         
 62            if (components != null)  
 63            
 64               components.Dispose(); 
 65            }
 
 66         }
 
 67         base.Dispose( disposing ); 
 68      }
 
 69
 70      Windows 窗体设计器生成的代码 
246
247      /// <summary> 
248      /// 应用程序的主入口点。 
249      /// </summary> 

250      [STAThread] 
251      static void Main()  
252      
253         Application.Run(new Form1()); 
254      }
 
255
256      private void button1_Click(object sender, System.EventArgs e) 
257      
258         Stream ms; 
259          
260         byte[] picbyte; 
261         try 
262         
263
264            if(ofdSelectPic.ShowDialog()==DialogResult.OK) 
265            
266               if((ms=ofdSelectPic.OpenFile())!=null
267               
268                   
269                  picbyte=new byte[ms.Length]; 
270                  ms.Position=0
271                  ms.Read(picbyte,0,Convert.ToInt32(ms.Length)); 
272                   
273pictureBox1.Image=Image.FromFile(ofdSelectPic.FileName.ToString()); 
274                  dataSet11.Clear(); 
275                  sqlDataAdapter1.Fill(dataSet11,"mytb"); 
276                  DataRow myRow; 
277                  myRow=dataSet11.Tables["mytb"].NewRow(); 
278                  myRow["pc"]=picbyte; 
279                
280                  myRow["name"]=mydt.Month.ToString()+mydt.Day.ToString()+mydt.Hour.ToString()+mydt.Minute.ToString()+mydt.Second.ToString()+mydt.Millisecond.ToString(); 
281                  dataSet11.Tables["mytb"].Rows.Add(myRow); 
282                
283                  sqlDataAdapter1.Update(dataSet11); 
284  label1.Text=this.CurRow(dataSet11,int.Parse(textBox1.Text)); 
285                  //ms.Close(); 
286               }
 
287            }
 
288         }
 
289         catch(Exception me) 
290         
291            MessageBox.Show(me.Message); 
292         }
 
293      }
 
294
295      private void button2_Click(object sender, System.EventArgs e) 
296      
297         dataSet11.Clear(); 
298         sqlDataAdapter1.Fill(dataSet11,"mytb"); 
299          
300         try 
301         
302          
303            //picbyte=new byte[(dataSet11.Tables["mytb"].Rows[int.Parse(textBox1.Text)]["pc"].ToString()).Length]; 
304            MemoryStream ms=new MemoryStream((byte[])dataSet11.Tables["mytb"].Rows[(int.Parse(textBox1.Text)-1)]["pc"]); 
305            //MessageBox.Show();    
306          
307            pictureBox1.Image=Image.FromStream(ms); 
308            //ms.Close(); 
309            label1.Text=this.CurRow(dataSet11,int.Parse(textBox1.Text)); 
310         }
 
311         catch(Exception me) 
312         
313            MessageBox.Show(me.Message );}
 
314      }
 
315
316      private void button3_Click(object sender, System.EventArgs e) 
317      
318            MemoryStream ms=new MemoryStream(); 
319         byte[] picbyte; 
320         //dim ms as new io.memorystream() 
321    
322         //ms=new MemoryStream(6000); 
323         DateTime mydt=DateTime.Now; 
324         pictureBox1.Image.Save(ms,pictureBox1.Image.RawFormat); 
325         picbyte=new byte[ms.Length]; 
326         ms.Position=0
327         ms.Read(picbyte,0,Convert.ToInt32(ms.Length)); 
328         sqlDataAdapter1.Fill(dataSet11,"mytb"); 
329         //MessageBox.Show(picbyte[1].ToString()+picbyte[0].ToString()+picbyte[1].ToString()+picbyte[2].ToString()); 
330         DataRow myRow; 
331         myRow=dataSet11.Tables["mytb"].NewRow(); 
332         myRow["pc"]=picbyte; 
333         myRow["name"]=mydt.Month.ToString()+mydt.Day.ToString()+mydt.Hour.ToString()+mydt.Minute.ToString()+mydt.Second.ToString()+mydt.Millisecond.ToString(); 
334         dataSet11.Tables["mytb"].Rows.Add(myRow); 
335         sqlDataAdapter1.Update(dataSet11); 
336         //ms.Close(); 
337       
338 label1.Text=this.CurRow(dataSet11,int.Parse(textBox1.Text)); 
339      }
 
340
341      private void Form1_Load(object sender, System.EventArgs e) 
342      
343         myname=   mydt.Month.ToString()+mydt.Day.ToString()+mydt.Hour.ToString()+mydt.Minute.ToString()+mydt.Second.ToString()+mydt.Millisecond.ToString(); 
344
345      }
 
346      private string CurRow(DataSet ts,int cur) 
347      
348       return cur.ToString()+"/"+this.BindingContext[ts,"mytb"].Count.ToString(); 
349      }
 
350
351      private void button4_Click(object sender, System.EventArgs e) 
352      
353         textBox1.Text=(int.Parse(textBox1.Text)-1).ToString(); 
354         dataSet11.Clear(); 
355         sqlDataAdapter1.Fill(dataSet11,"mytb"); 
356          
357         try 
358         
359          
360            //picbyte=new byte[(dataSet11.Tables["mytb"].Rows[int.Parse(textBox1.Text)]["pc"].ToString()).Length]; 
361            MemoryStream ms=new MemoryStream((byte[])dataSet11.Tables["mytb"].Rows[(int.Parse(textBox1.Text)-1)]["pc"]); 
362            //MessageBox.Show();    
363          
364            pictureBox1.Image=Image.FromStream(ms); 
365            //ms.Close(); 
366            label1.Text=this.CurRow(dataSet11,int.Parse(textBox1.Text)); 
367         }
 
368         catch(Exception me) 
369         
370            MessageBox.Show(me.Message );}
 
371      }
 
372
373      private void button5_Click(object sender, System.EventArgs e) 
374      
375      textBox1.Text=(int.Parse(textBox1.Text)+1).ToString(); 
376         dataSet11.Clear(); 
377         sqlDataAdapter1.Fill(dataSet11,"mytb"); 
378          
379         try 
380         
381          
382            //picbyte=new byte[(dataSet11.Tables["mytb"].Rows[int.Parse(textBox1.Text)]["pc"].ToString()).Length]; 
383            MemoryStream ms=new MemoryStream((byte[])dataSet11.Tables["mytb"].Rows[(int.Parse(textBox1.Text)-1)]["pc"]); 
384            //MessageBox.Show();    
385          
386            pictureBox1.Image=Image.FromStream(ms); 
387            //ms.Close(); 
388            label1.Text=this.CurRow(dataSet11,int.Parse(textBox1.Text)); 
389         }
 
390         catch(Exception me) 
391         
392            MessageBox.Show(me.Message );}
 
393      }
 
394
395      private void button6_Click(object sender, System.EventArgs e) 
396      
397         //SqlConnection conn=new SqlConnection(@"data source=chenyuming2004\VSdotNET;uid=sa;pwd=cym;database=lhf"); 
398         sqlConnection1.Open(); 
399         //this.sqlInsertCommand1.CommandText = "INSERT INTO mytb(pc, name) VALUES (@pc, @name); SELECT pc, name FROM mytb WHERE (" + 
400         //   "name = @name)"; 
401Stream ms; 
402         SqlCommand cmd=new SqlCommand("insert into mytb values (@pc,'"+this.myname+"')",sqlConnection1); 
403         byte[] ib=new Byte[60000]; 
404         if(ofdSelectPic.ShowDialog()==DialogResult.OK) 
405         
406            if((ms=ofdSelectPic.OpenFile())!=null
407            
408                   
409               //FileStream fs=new FileStream(ofdSelectPic.FileName ,FileMode.Open ,FileAccess.Read ); 
410               ms.Read(ib,0,Convert.ToInt32(ms.Length)); 
411               this.pictureBox1.Image=Image.FromStream(ms); 
412               cmd.Parameters.Add("@pc",SqlDbType.Image,(int)ms.Length); 
413               cmd.Parameters["@pc"].Value=ib; 
414               cmd.ExecuteNonQuery(); 
415               sqlConnection1.Close(); 
416            }
 
417            }
 
418      }
 
419       
420   }
 
421}
 
422