2013-07-03 72 views
0

我在頁面上有一個文件上傳控件和一個「上傳」按鈕。我正在嘗試編寫上傳文件到我的數據庫的代碼。無法綁定多路徑標識符「xxx」

請找到下面的代碼: -

if (FileUpload1.HasFile) 
      { 

       string fileextention = System.IO.Path.GetExtension(FileUpload1.FileName); 
       if (fileextention == ".doc" || fileextention == ".docx") 
       { 
        string filename = System.IO.Path.GetFileName(FileUpload1.FileName); 
        //Upload file 
        FileUpload1.SaveAs(Server.MapPath("~/DocumentCollection/") + filename); 
        string fullpath = "DocumentCollection/" + filename; 
        string query = "insert into dbo.DocumentMaster(Name,Path) values(" + filename + "," + "DocumentCollection/" + filename + ");"; 
        SqlDataAdapter objda = new SqlDataAdapter(query, objcon); 


        objcon.Open(); 
        objda.SelectCommand.ExecuteNonQuery(); 
        objcon.Close(); 
        Label2.Text = " successfully uploaded."; 

       } 
       else 
       { 
        Label2.Text = "Selected File is not a word document file."; 
       } 

我的數據庫結構: -

CREATE TABLE [dbo].[DocumentMaster](
    [Id] [int] IDENTITY(1,1) NOT NULL, 
    [Name] [varchar](100) NULL, 
    [Path] [varchar](100) NULL, 
CONSTRAINT [PK_DocumentMaster] PRIMARY KEY CLUSTERED 
(
    [Id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 

但我當我試圖上傳word.docx文件遇到錯誤。 word.docx已成功上傳到我的應用程序的DocumentCollection文件夾中。

無法綁定多部分標識符「word.docx」。 列名稱'DocumentCollection'無效。 無法綁定多部分標識符「word.docx」。

請幫幫我。

+0

名稱和路徑是varchar - 您需要將值放在'(單引號)中。我還建議你考慮一下使用參數化查詢的習慣,以免讓自己開放SQL注入攻擊。 – Tim

+0

換句話說,''insert into dbo.DocumentMaster(Name,Path)values(''+ filename +'',''+'DocumentCollection /「+ filename +」');「;' - 注意周圍的單引號要插入的值。 – Tim

+0

非常感謝:-) – Tannya

回答

0

這主要是你發送到數據庫的內容:

insert into dbo.DocumentMaster(Name,Path) values(word.docx,DocumentCollection/word.docx) 

正如你所看到的,你是不是值的一部分發送「字符串」。

你可以這樣做:

string query = "insert into dbo.DocumentMaster(Name,Path) values('" + filename + "','" + "DocumentCollection/" + filename + "');"; 

所以,你得到這個查詢結果:

insert into dbo.DocumentMaster(Name,Path) values('word.docx','DocumentCollection/word.docx') 

解決您的問題,但你還是SQL注入非常敏感。我強烈建議您改用參數化查詢。

+0

非常感謝你:-) – Tannya

相關問題