一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

【數(shù)據(jù)庫】SQL Server中的Image數(shù)據(jù)類型的操作

 goodwangLib 2014-01-01

準(zhǔn)備工作,在庫Im_Test中建立一張表Im_Info,此表中有兩個(gè)字段,分別為Pr_Id (INT),Pr_Info (IMAGE),用來存儲圖形編號及圖形信息。其語法如下:

  1. CREATE TEALE Im_Info (   
  2. Pr_Id INT NULL ,   
  3. Pr_Info IMAGE NULL   
  4. )   

第一步: 往表中插入一條記錄,并初始化PR_INFO字段。其語法如下:

  1. INSERT INTO Im_Info VALUES (1 ,0xFFFFFFFF)  

第二步往表中寫入圖形信息。其語法如下:

  1. DECLARE @@ptrval varbinary(16)   
  2. SELECT @@ptrval = TEXTPTR(Pr_Info)   
  3. FROM Im_Info   
  4. WHERE Pr_Id = 1   
  5. WRITETEXT Im_Text.Im_Info   
  6. @@ptrval 0x624fd543fd…..   

其中0x624fd543fd….. 為圖形的十六進(jìn)制數(shù)據(jù),可以通過C 、Java等工具獲得。

注意在寫入圖形信息前必須先將此數(shù)據(jù)庫的 'select into/bulkcopy' 屬性設(shè)置為 True ,其語法如下:

  1. use master   
  2. exec sp_dboption Im_Test ,'select into/bulkcopy' ,True   

 C#讀取Image數(shù)據(jù)類型:

(1)控制臺應(yīng)用程序下演示插入圖片

  1. public void InsertIMG()  
  2.         {  
  3.   
  4.             //將需要存儲的圖片讀取為數(shù)據(jù)流  
  5.             FileStream fs = new FileStream(@"E:\c.jpg", FileMode.Open,FileAccess.Read);  
  6.             Byte[] btye2 = new byte[fs.Length];  
  7.             fs.Read(btye2 , 0, Convert.ToInt32(fs.Length));  
  8.             fs.Close();  
  9.               
  10.             using (SqlConnection conn = new SqlConnection(sqlconnstr))  
  11.             {  
  12.                 conn.Open();  
  13.                 SqlCommand cmd = new SqlCommand();  
  14.                 cmd.Connection = conn;  
  15.                 cmd.CommandText = "insert into T_Img(imgfile) values(@imgfile)";  
  16.                 SqlParameter par = new SqlParameter("@imgfile", SqlDbType.Image);  
  17.                 par.Value = bt;  
  18.                 cmd.Parameters.Add(par);  
  19.   
  20.                 int t=(int)(cmd.ExecuteNonQuery());  
  21.                 if (t > 0)  
  22.                 {  
  23.                     Console.WriteLine("插入成功");  
  24.                 }  
  25.                 conn.Close();  
  26.             }  
  27.         }  

(2)控制臺應(yīng)用程序下讀出并生成圖片到物理位置

  1. public void Read()  
  2.         {  
  3.             byte[] MyData = new byte[0];  
  4.             using (SqlConnection conn = new SqlConnection(sqlconnstr))  
  5.             {  
  6.                 conn.Open();  
  7.                 SqlCommand cmd = new SqlCommand();  
  8.                 cmd.Connection = conn;  
  9.                 cmd.CommandText = "select * from T_img";  
  10.                 SqlDataReader sdr = cmd.ExecuteReader();  
  11.                 sdr.Read();  
  12.                 MyData = (byte[])sdr["ImgFile"];//讀取第一個(gè)圖片的位流  
  13.                 int ArraySize= MyData.GetUpperBound(0);//獲得數(shù)據(jù)庫中存儲的位流數(shù)組的維度上限,用作讀取流的上限  
  14.   
  15.                 FileStream fs = new FileStream(@"c:\00.jpg", FileMode.OpenOrCreate, FileAccess.Write);  
  16.                 fs.Write(MyData, 0, ArraySize);  
  17.                 fs.Close();   //-- 寫入到c:\00.jpg。  
  18.                 conn.Close();  
  19.                 Console.WriteLine("讀取成功");//查看硬盤上的文件  
  20.             }  
  21.         }  

(3)Web下picshow.aspx頁將圖片讀取出來并寫入到瀏覽器上呈現(xiàn)

  1. public void Read()  
  2.    {  
  3.        byte[] MyData = new byte[0];  
  4.        using (SqlConnection conn = new SqlConnection(sqlconnstr))  
  5.        {  
  6.            conn.Open();  
  7.            SqlCommand cmd = new SqlCommand();  
  8.            cmd.Connection = conn;  
  9.            cmd.CommandText = "select * from T_img";  
  10.            SqlDataReader sdr = cmd.ExecuteReader();  
  11.            sdr.Read();  
  12.            MyData = (byte[])sdr["ImgFile"];  
  13.            Response.ContentType = "image/gif";  
  14.            Response.BinaryWrite(MyData);  
  15.            conn.Close();  
  16.            Response.Write("讀取成功");  
  17.        }  

(4)在web中可以如上picshow.aspx頁面讀取并顯示圖片,而真正引用該圖片時(shí)如下示例

  1. <img src="picshow.aspx" width="500" height="300" />  

(5)Winform下將圖片寫入到sql數(shù)據(jù)庫image類型字段中的方法和以上方法基本一致,僅區(qū)別于可以利用多個(gè)對話框來幫助選取存儲圖片等,各個(gè)屬性可以方便的利用上

(6)Winform下讀取圖片在picturebox控件中顯示出來

方法一:利用MemoryStream 和System.Drawing.Image

  1. public void Read()  
  2.         {  
  3.             byte[] MyData = new byte[0];  
  4.             using (SqlConnection conn = new SqlConnection(sqlconnstr))  
  5.             {  
  6.                 conn.Open();  
  7.                 SqlCommand cmd = new SqlCommand();  
  8.                 cmd.Connection = conn;  
  9.                 cmd.CommandText = "select * from T_img";  
  10.                 SqlDataReader sdr = cmd.ExecuteReader();  
  11.                 sdr.Read();  
  12.                 MyData = (byte[])sdr["ImgFile"];  
  13.   
  14.                 MemoryStream mystream = new MemoryStream(MyData);  
  15.                 //用指定的數(shù)據(jù)流來創(chuàng)建一個(gè)image圖片  
  16.                 System.Drawing.Image img = System.Drawing.Image.FromStream(mystream, true);  
  17.                   
  18.                 System.Windows.Forms.PictureBox picbox = new PictureBox();  
  19.                 picbox.Image = img;  
  20.                 picbox.Left = 30;  
  21.                 picbox.Top = 80;  
  22.                 picbox.Width = 800;  
  23.                 picbox.Height = 500;  
  24.                 this.Controls.Add(picbox);  
  25.   
  26.                 mystream.Close();  
  27.                 conn.Close();  
  28.             }  
  29.         }  

方法二:將流直接讀取成圖片并寫入到物理位置,然后再行利用該圖片呈現(xiàn)

  1. void Read()  
  2.         {  
  3.             using (SqlConnection conn = new SqlConnection(sqlconnstr))  
  4.             {  
  5.                 conn.Open();  
  6.                 SqlCommand cmd = new SqlCommand();  
  7.                 cmd.Connection = conn;  
  8.                 cmd.CommandText = "select * from T_img";  
  9.                 SqlDataReader sdr = cmd.ExecuteReader();  
  10.                 sdr.Read();  
  11.   
  12.                 byte[] Image_img = (byte[])sdr["ImgFile"];  
  13.                 if (Image_img.Length == 0)  
  14.                 {  
  15.                     return;  
  16.                 }  
  17.   
  18.                 int filelength = Image_img.Length;  
  19.                 string imageName = "1.jpg";  
  20.                 string myUrl = Environment.CurrentDirectory + "\\" + imageName;  
  21.                 FileStream fs = new FileStream(myUrl, FileMode.OpenOrCreate,FileAccess.Write);  
  22.                 BinaryWriter BW = new BinaryWriter(fs);  
  23.                 BW.BaseStream.Write(Image_img, 0, filelength);  
  24.                 BW.Flush();  
  25.                 BW.Close();  
  26.                 System.Windows.Forms.PictureBox picbox = new PictureBox();  
  27.                   
  28.                 //為picbox添加圖片方法一  
  29.                 //picbox.ImageLocation = myUrl;  
  30.                 //picbox.Width = 800;  
  31.                 //picbox.Height = 300;  
  32.   
  33.    
  34.   
  35.                 //為picbox添加圖片方法二  
  36.                 Bitmap bitmap = new Bitmap(myUrl);  
  37.                 picbox.Width = 100;//bitmap.Width;  
  38.                 picbox.Height = 80;//bitmap.Height;  
  39.                 picbox.Image = (Image)bitmap;  
  40.                 picbox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;  
  41.                 picbox.Left = 20;  
  42.                 picbox.Top = 30;  
  43.   
  44.                 this.Controls.Add(picbox);  
  45.                 conn.Close();                  
  46.             }  

                        轉(zhuǎn)自:http://www.cnblogs.com/samcn/archive/2008/08/24/1275072.html

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日韩精品一级片免费看| 国产精品涩涩成人一区二区三区| 福利视频一区二区在线| 高清免费在线不卡视频| 内射精子视频欧美一区二区| 尤物久久91欧美人禽亚洲| 日韩精品综合福利在线观看| 国产免费人成视频尤物| 不卡一区二区高清视频| 在线精品首页中文字幕亚洲| 久久精品亚洲情色欧美| 日韩成人动作片在线观看 | 久久香蕉综合网精品视频| 女生更色还是男生更色| 在线观看免费无遮挡大尺度视频| 日韩在线中文字幕不卡| 免费一级欧美大片免费看| 国产精品福利一二三区| 精品人妻精品一区二区三区 | 青青操视频在线播放免费| 亚洲最新中文字幕在线视频| 亚洲视频在线观看免费中文字幕| 男人和女人黄 色大片| 国产一区日韩二区欧美| 日本妇女高清一区二区三区| 在线观看国产成人av天堂野外| 久久少妇诱惑免费视频| 中文字幕日韩无套内射| 精品日韩av一区二区三区| 欧洲亚洲精品自拍偷拍| 亚洲中文在线观看小视频| 老司机精品在线你懂的| 国产成人精品国内自产拍| 国产二级一级内射视频播放| 亚洲国产成人久久99精品| 欧美一级黄片免费视频| 亚洲欧美日韩网友自拍| 日韩在线免费看中文字幕| 欧美午夜一级特黄大片| 亚洲欧美日韩综合在线成成| 亚洲中文字幕视频在线播放|