无法绑定多路径标识符“xxx”

时间:2013-07-03 08:47:29

标签: asp.net sql

我的页面中有文件上传控件和“上传”按钮。我正在尝试编写用于将word文件上传到我的数据库的代码。

请在下面找到代码: -

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”。

请帮帮我。

1 个答案:

答案 0 :(得分: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注入攻击。我强烈建议您使用参数化查询。

相关问题