ASP.NET下向SQLServer2008導入文件實例操作方法
ASP.NET向SQL Server導入文件主要用到FileUpload控件的FileBytes屬性。該屬性從FileUpload控件所指定的文件返回一個字節(jié)數(shù)組 。
1.數(shù)據(jù)庫準備
為了方便大家能夠理解,這里我們只設計兩個字段,一個是文件類型字段,字段名為FileType,另一個是存放文件內容字段,字段名為FileContent。創(chuàng)建數(shù)據(jù)庫
,數(shù)據(jù)庫名為VarFile,語句如下:
CREATE DATABASE VARFILE
GO
創(chuàng)建表,表名為FileInOut,語句如下:
USE VARFILE
GO
CREATE TABLE FILEINTOU
(
FileType nvarchar(30) not null,
FileContent varbinary(max) null
)
2.添加控件
運行VS2008并新建一個網站,在頁面Default.aspx中添加一個FileUpload控件,ID 為FileUpload1.同時添加三個Button按鈕,ID分別為fileUp和fileLoad。Text屬性分別設置為“上傳文件”和“下載文件”。
3.添加代碼
(1)添加命名空間,因為和SQL Server數(shù)據(jù)庫連接,所以添加using System.Data.Sqlclient和using System.Data命名空間。又因為要設置輸出流的HTTP的字符集為"gb2312"字符編碼,所以添加using System.Text命名空間。同時又因為要把導出文件強類型化為字符串,所以添加using System.Collections.Specialized命名空間。
(2)添加“上傳文件”按鈕的事件代碼。當單擊“上傳文件”按鈕后,獲取FileUpload控件所選擇的文件的文件類型以及文件的字節(jié)數(shù)組插入數(shù)據(jù)庫中。切換到設計視圖,雙擊“上傳文件”按鈕,添加"上傳文件"按鈕事件代碼,代碼如下:
protected void fileUp_Click(object sender,EventArgs e)
{
if(FileUpload1.FileName==string.Empty)
{
Response.Write("<script>altert(‘請選擇要上傳的文件')</script>");
return;
}
string mailto:connstr=@%22Data Source=69F638102711447\SQL2008;Initial Catalog=VarFile;Integrated Security=Ture"; //數(shù)據(jù)庫連接字符串
string the Selected=FileUpload1.FileName; //獲取上傳文件的后綴名
string extension=theSelected.Substring(theSelected.LastIndexOf(".")).ToLower();
if(CheckFileType(extension)) //如果有指定的文件類型
{
string contentType=GetContentType(extension);
string sqlstr="insert into FileInOut values(@FileType,@FileCount)"; //上傳文件的SQL語句
string sqlstrclear="truncate table FileInOut"; //清空數(shù)據(jù)庫SQL語句
SqlConnection con=new SqlConnection(connstr); //實例化數(shù)據(jù)庫連接對象
SqlCommand cmd=new SqlCommand(sqlstr,con); //實例化上傳文件SQL命令
SqlCommand cmdclear=new SqlCommand(sqlstrclear,con); //實例化清空數(shù)據(jù)庫SQL命令
//定義問價類型參數(shù)
cmd.Parameters.Add(new SqlParameter("@FileType”,SlqDbType.NvarChar,30));
cmd.Parameters["@FileType"].Value=contentType; //定義文件內容參數(shù)
cmd.Parameters.Add(new SqlParameter("@FileCount",SqlDbType.NVarChar,30)); //將文件轉化為字節(jié)數(shù)組作為@FileCount的值
cmd.Parameters["@FileCount"].Value=FileUpload1.FileBytes;
con.Open();
cmdclear.ExecuteNonQuery(); //執(zhí)行清空數(shù)據(jù)庫命令
cmd.ExecuteNonQuery(); //執(zhí)行上傳文件命令
}
}
(3)添加獲取文件類型和獲得文件導出方式的函數(shù)方法。首先查看所要上傳文件類型是否在指定問價類型內,如果在,則可以直接導入文件,然后根據(jù)文件類型
獲取此文件導出方式并存放在FileType字段中,代碼如下:
public static bool CheckFileType(string type)
{
StringDictionary sd=new StringDictionary(); //實例化集合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.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]; //返回對應鍵的值
}
(4)上傳文件,選擇一個pdf文件,單擊"上傳文件"按鈕后,打開數(shù)據(jù)庫中的FileInOut表,如圖所示可以看到。
- asp.net實現(xiàn)數(shù)據(jù)從DataTable導入到Excel文件并創(chuàng)建表的方法
- asp.net實現(xiàn)Gradview綁定數(shù)據(jù)庫數(shù)據(jù)并導出Excel的方法
- asp.net頁面中如何獲取Excel表的內容
- 直接在線預覽Word、Excel、TXT文件之ASP.NET
- asp.net中Table生成Excel表格的方法
- asp.net中EXCEL數(shù)據(jù)導入到數(shù)據(jù)庫的方法
- asp.net+ajax+sqlserver自動補全功能實現(xiàn)解析
- asp.net(c#)實現(xiàn)從sqlserver存取二進制圖片的代碼
- 快速插入大量數(shù)據(jù)的asp.net代碼(Sqlserver)
- asp.net實現(xiàn)將Excel中多個sheet數(shù)據(jù)導入到SQLSERVER中的方法
相關文章
將備份的SQLServer數(shù)據(jù)庫轉換為SQLite數(shù)據(jù)庫操作方法
怎樣將備份的SQLServer數(shù)據(jù)庫轉換為SQLite數(shù)據(jù)庫操作方法:先要安裝好SQLServer2005,并且記住安裝時自己設置的用戶名和密碼,感興趣的朋友可以參考下啊,或許本文對你有所幫助2013-02-02
數(shù)據(jù)庫備份 SQLServer的備份和災難恢復
數(shù)據(jù)處理在現(xiàn)代企業(yè)運營中變得越來越重要,越來越關鍵,甚至會成為企業(yè)發(fā)展的一項瓶頸. 數(shù)據(jù)保護的重要性也不言而喻. 如果一個企業(yè)沒有很好的數(shù)據(jù)保護方案或策略的話,一旦發(fā)生重要數(shù)據(jù)丟失,后果將會是災難性的,伴隨著會有經濟利益方面的損失.2010-07-07
SQL Server 查詢處理中的各個階段(SQL執(zhí)行順序)示例
SQL不同于與其他編程語言的最明顯特征是處理代碼的順序,以下就為大家詳細的介紹一下,需要的朋友可以參考下2013-07-07
sql server 2012 備份集中的數(shù)據(jù)庫備份與現(xiàn)有的xxx數(shù)據(jù)庫不同
這篇文章主要介紹了sql server 2012 備份集中的數(shù)據(jù)庫備份與現(xiàn)有的xxx數(shù)據(jù)庫不同,需要的朋友可以參考下2016-07-07
利用SQL Server數(shù)據(jù)庫郵件服務實現(xiàn)監(jiān)控和預警
這篇文章主要介紹了利用數(shù)據(jù)庫郵件服務實現(xiàn)監(jiān)控和預警,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10
SQL Server 數(shù)據(jù)庫備份和還原認識和總結(二)
本文將針對上文繼續(xù)進行數(shù)據(jù)備份和還原講解,主要講解備份和還原的一些關鍵選項2012-08-08

