ASP.NET下向SQLServer2008導(dǎo)入文件實(shí)例操作方法
ASP.NET向SQL Server導(dǎo)入文件主要用到FileUpload控件的FileBytes屬性。該屬性從FileUpload控件所指定的文件返回一個(gè)字節(jié)數(shù)組 。
1.數(shù)據(jù)庫(kù)準(zhǔn)備
為了方便大家能夠理解,這里我們只設(shè)計(jì)兩個(gè)字段,一個(gè)是文件類(lèi)型字段,字段名為FileType,另一個(gè)是存放文件內(nèi)容字段,字段名為FileContent。創(chuàng)建數(shù)據(jù)庫(kù)
,數(shù)據(jù)庫(kù)名為VarFile,語(yǔ)句如下:
CREATE DATABASE VARFILE
GO
創(chuàng)建表,表名為FileInOut,語(yǔ)句如下:
USE VARFILE
GO
CREATE TABLE FILEINTOU
(
FileType nvarchar(30) not null,
FileContent varbinary(max) null
)
2.添加控件
運(yùn)行VS2008并新建一個(gè)網(wǎng)站,在頁(yè)面Default.aspx中添加一個(gè)FileUpload控件,ID 為FileUpload1.同時(shí)添加三個(gè)Button按鈕,ID分別為fileUp和fileLoad。Text屬性分別設(shè)置為“上傳文件”和“下載文件”。
3.添加代碼
(1)添加命名空間,因?yàn)楹蚐QL Server數(shù)據(jù)庫(kù)連接,所以添加using System.Data.Sqlclient和using System.Data命名空間。又因?yàn)橐O(shè)置輸出流的HTTP的字符集為"gb2312"字符編碼,所以添加using System.Text命名空間。同時(shí)又因?yàn)橐褜?dǎo)出文件強(qiáng)類(lèi)型化為字符串,所以添加using System.Collections.Specialized命名空間。
(2)添加“上傳文件”按鈕的事件代碼。當(dāng)單擊“上傳文件”按鈕后,獲取FileUpload控件所選擇的文件的文件類(lèi)型以及文件的字節(jié)數(shù)組插入數(shù)據(jù)庫(kù)中。切換到設(shè)計(jì)視圖,雙擊“上傳文件”按鈕,添加"上傳文件"按鈕事件代碼,代碼如下:
protected void fileUp_Click(object sender,EventArgs e)
{
if(FileUpload1.FileName==string.Empty)
{
Response.Write("<script>altert(‘請(qǐng)選擇要上傳的文件')</script>");
return;
}
string mailto:connstr=@%22Data Source=69F638102711447\SQL2008;Initial Catalog=VarFile;Integrated Security=Ture"; //數(shù)據(jù)庫(kù)連接字符串
string the Selected=FileUpload1.FileName; //獲取上傳文件的后綴名
string extension=theSelected.Substring(theSelected.LastIndexOf(".")).ToLower();
if(CheckFileType(extension)) //如果有指定的文件類(lèi)型
{
string contentType=GetContentType(extension);
string sqlstr="insert into FileInOut values(@FileType,@FileCount)"; //上傳文件的SQL語(yǔ)句
string sqlstrclear="truncate table FileInOut"; //清空數(shù)據(jù)庫(kù)SQL語(yǔ)句
SqlConnection con=new SqlConnection(connstr); //實(shí)例化數(shù)據(jù)庫(kù)連接對(duì)象
SqlCommand cmd=new SqlCommand(sqlstr,con); //實(shí)例化上傳文件SQL命令
SqlCommand cmdclear=new SqlCommand(sqlstrclear,con); //實(shí)例化清空數(shù)據(jù)庫(kù)SQL命令
//定義問(wèn)價(jià)類(lèi)型參數(shù)
cmd.Parameters.Add(new SqlParameter("@FileType”,SlqDbType.NvarChar,30));
cmd.Parameters["@FileType"].Value=contentType; //定義文件內(nèi)容參數(shù)
cmd.Parameters.Add(new SqlParameter("@FileCount",SqlDbType.NVarChar,30)); //將文件轉(zhuǎn)化為字節(jié)數(shù)組作為@FileCount的值
cmd.Parameters["@FileCount"].Value=FileUpload1.FileBytes;
con.Open();
cmdclear.ExecuteNonQuery(); //執(zhí)行清空數(shù)據(jù)庫(kù)命令
cmd.ExecuteNonQuery(); //執(zhí)行上傳文件命令
}
}
(3)添加獲取文件類(lèi)型和獲得文件導(dǎo)出方式的函數(shù)方法。首先查看所要上傳文件類(lèi)型是否在指定問(wèn)價(jià)類(lèi)型內(nèi),如果在,則可以直接導(dǎo)入文件,然后根據(jù)文件類(lèi)型
獲取此文件導(dǎo)出方式并存放在FileType字段中,代碼如下:
public static bool CheckFileType(string type)
{
StringDictionary sd=new StringDictionary(); //實(shí)例化集合StringDictionary類(lèi)
sd.Add(".doc","application/msword");
sd.Add(".ppt","application/vnd.ms-powerpoint");
sd.Add(".xsl","application/vnd.ms-excel");
sd.Add(".rtf","application/msword");
sd.Add(".html","text/html");
sd.Add(".htm","text/html");
sd.Add(".txt","text/plain");
sd.Add(".pdf","application/pdf");
return sd.ContainsKey(type); //確定StringDictionary是否包含特定鍵
}
public static string GetContentType(string extension) //獲取輸出文件方式
{StringDictionary sd=new StringDictionary();
sd.Add(".doc","application/msword");
sd.Add(".ppt","application/vnd.ms-powerpoint");
sd.Add(".xsl","application/vnd.ms-excel");
sd.Add(".rtf","application/msword");
sd.Add(".html","text/html");
sd.Add(".htm","text/html");
sd.Add(".txt","text/plain");
sd.Add(".pdf","application/pdf");
return sd[extension]; //返回對(duì)應(yīng)鍵的值
}
(4)上傳文件,選擇一個(gè)pdf文件,單擊"上傳文件"按鈕后,打開(kāi)數(shù)據(jù)庫(kù)中的FileInOut表,如圖所示可以看到。
- asp.net實(shí)現(xiàn)數(shù)據(jù)從DataTable導(dǎo)入到Excel文件并創(chuàng)建表的方法
- asp.net實(shí)現(xiàn)Gradview綁定數(shù)據(jù)庫(kù)數(shù)據(jù)并導(dǎo)出Excel的方法
- asp.net頁(yè)面中如何獲取Excel表的內(nèi)容
- 直接在線(xiàn)預(yù)覽Word、Excel、TXT文件之ASP.NET
- asp.net中Table生成Excel表格的方法
- asp.net中EXCEL數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)的方法
- asp.net+ajax+sqlserver自動(dòng)補(bǔ)全功能實(shí)現(xiàn)解析
- asp.net(c#)實(shí)現(xiàn)從sqlserver存取二進(jìn)制圖片的代碼
- 快速插入大量數(shù)據(jù)的asp.net代碼(Sqlserver)
- asp.net實(shí)現(xiàn)將Excel中多個(gè)sheet數(shù)據(jù)導(dǎo)入到SQLSERVER中的方法
相關(guān)文章
一個(gè)刪選數(shù)據(jù)的例子,使用GROUP、DISTINCT實(shí)例解析
今天遇到的問(wèn)題,糾結(jié)了一上午,終于解決了。在此記錄下來(lái),自我認(rèn)為還有很多類(lèi)似的問(wèn)題都可以套用這段代碼2013-09-09sql語(yǔ)句查詢(xún)重復(fù)的數(shù)據(jù)(最新推薦)
這篇文章主要介紹了sql語(yǔ)句查詢(xún)重復(fù)的數(shù)據(jù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05sqlserver對(duì)字段的添加修改刪除、以及字段的說(shuō)明
sqlserver對(duì)字段的添加修改刪除、以及字段的說(shuō)明,需要的朋友可以參考下。2011-12-12清除SQL?Server數(shù)據(jù)庫(kù)日志(ldf文件)的方法匯總
隨著系統(tǒng)運(yùn)行時(shí)間的推移,數(shù)據(jù)庫(kù)日志文件會(huì)變得越來(lái)越大,這時(shí)我們需要對(duì)日志文件進(jìn)行備份或清理,這篇文章主要介紹了清除SQL?Server數(shù)據(jù)庫(kù)日志(ldf文件)的幾種方法,需要的朋友可以參考下2022-10-10SQL Server誤區(qū)30日談 第23天 有關(guān)鎖升級(jí)的誤區(qū)
在SQL Server 2005和之前的版本,頁(yè)鎖會(huì)直接升級(jí)到表鎖。在SQL Server 2005或SQL Server 2008,你可以通過(guò)如下跟蹤標(biāo)志改變鎖升級(jí)的行為2013-01-01SQL Server數(shù)據(jù)庫(kù)按百分比查詢(xún)出表中的記錄數(shù)
這篇文章主要介紹了SQL Server數(shù)據(jù)庫(kù)在一個(gè)表中按百分比查詢(xún)出記錄條數(shù)的方法及代碼示例,需要的朋友可以參考下2015-08-08Android實(shí)現(xiàn)矩形區(qū)域截屏的方法
對(duì)屏幕進(jìn)行截屏并裁剪有兩種方式:早截圖和晚截圖,對(duì)于早截圖和晚截圖的概念大家通過(guò)本文詳解學(xué)習(xí)。本文重點(diǎn)給大家介紹android實(shí)現(xiàn)矩形區(qū)域截屏的方法,需要的朋友參考下2017-01-01SQL中的游標(biāo)、異常處理、存儲(chǔ)函數(shù)及總結(jié)(最新推薦)
游標(biāo)(cursor)是用來(lái)存儲(chǔ)查詢(xún)結(jié)果集的數(shù)據(jù)類(lèi)型,在存儲(chǔ)過(guò)程和函數(shù)中可以使用游標(biāo)對(duì)結(jié)果集進(jìn)行循環(huán)的處理,這篇文章主要介紹了SQL中的游標(biāo)、異常處理、存儲(chǔ)函數(shù)及總結(jié),需要的朋友可以參考下2023-02-02SQL優(yōu)化經(jīng)驗(yàn)總結(jié)
這篇文章主要內(nèi)容是SQL優(yōu)化經(jīng)驗(yàn)總結(jié),文章對(duì)SQL優(yōu)化進(jìn)行了詳細(xì)介紹,需要的朋友可以參考下2015-08-08