用SQL Server存儲文字數據非常easy實現,假設用SQL Server存儲圖片呢?大家有沒有實現思路呢?如今我用一個Demo來為大家提供一種在SQL Server中存儲圖片的思路。
場景:在superPhoto目錄中,有三位NBA超級巨星的圖片須要存儲在數據庫中,他們各自是保羅、羅斯和德隆,文件內容例如以下:
有了需求。以下講實現。實現過程分為3個步驟。
步驟1:我們須要在數據庫test中建立T_superStar表。並向表中插入三位球星的信息。
create table T_superStar ( superID varchar(10) primary key, superName varchar(10) not null, superPhoto varchar(10) not null ) insert into T_superStar values('1','保羅','001.png') insert into T_superStar values('2','羅斯','002.png') insert into T_superStar values('3','德隆','003.png')表結構例如以下圖所看到的:
通過查詢結果能夠發現,superPhoto字段存儲的是圖片文件的文件名稱。這樣的思路好比內存中的棧和堆,我們都知道棧用於存儲值類型數據。由於值類型的數據大小是固定的。堆用於存儲引用型數據, 比方對象,數組等。在加入一個對象時,除了在堆中加入對象外。還要在棧中加入一個指向該對象的引用。
同理,由於圖片文件比較大。放在數據庫中非常占空間,所以我們把圖片放在類似於堆的目錄中,把文件名稱放在類似於棧的數據表中,通過文件名稱鎖定目標文件。
步驟2:在Asp.Net頁面加入GridView,並為GridView加入列,在此尤為強調圖片列的操作。我們須要為圖片列配置圖片的動態載入路徑。配置圖例如以下所看到的:
圖片列的屬性DataImageUrlField綁定數據表中的字段superPhoto。DataImageUrlFormat屬性依據DataImageUrlField讀取的文件名稱動態載入superPhoto目錄下的圖片文件,實現對存儲圖片的動態讀取。
步驟3:用C#獲取T_superStar表的數據。並和GridView綁定。
protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { SqlConnection con = DB.CreateCon(); con.Open(); SqlCommand cmd = new SqlCommand("select * from T_superStar", con); SqlDataReader sdr = cmd.ExecuteReader(); this.GridView1.DataSource = sdr; this.GridView1.DataBind(); } }到此,圖片存儲和讀取的代碼部分已經完畢。
IT人士都知道,學計算機學久了會養成一種計算機思維,用這樣的思維來解決平時遇到的問題,我想說我中招了。