将doc文件插入SQL Server中的列

时间:2015-12-01 04:05:24

标签: c# asp.net sql-server sql-server-2008

我想在SQL Server的字段中保存doc文件。该doc文件可以包含文本,图表,表格和图片。

我想将此文件保存在字段中,无论何时,我都可以搜索这些doc文件并找到我的搜索标题。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

在表格中创建一个数据类型为varbinary(max)的列,然后尝试 -

string filePath = FileUpload1.PostedFile.FileName;  
string filename = Path.GetFileName(filePath);
string ext = Path.GetExtension(filename);
string contenttype = String.Empty;
 switch(ext)
{
    case ".doc":
        contenttype = "application/vnd.ms-word";
        break;
    case ".docx":
        contenttype = "application/vnd.ms-word";
        break;
}
 if (contenttype != String.Empty)
{

    Stream fs = FileUpload1.PostedFile.InputStream;
    BinaryReader br = new BinaryReader(fs);
    Byte[] bytes = br.ReadBytes((Int32)fs.Length);

    //insert the file into database
    string strQuery = "insert into tblFiles(Name, ContentType, Data)" +
       " values (@Name, @ContentType, @Data)";
    SqlCommand cmd = new SqlCommand(strQuery);
    cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = filename;
    cmd.Parameters.Add("@ContentType", SqlDbType.VarChar).Value
      = contenttype;
    cmd.Parameters.Add("@Data", SqlDbType.Binary).Value = bytes;
    InsertUpdateData(cmd);
    lblMessage.ForeColor = System.Drawing.Color.Green;  
    lblMessage.Text = "File Uploaded Successfully";
}

答案 1 :(得分:3)

您可以在SQL中创建一个新的数据库字段VARBINARY(MAX),它可以保存任何数据。要将Doc文件保存到它,我会帮你举个例子。

        // Read the file and convert it to Byte Array

        string filePath = FileUpload1.PostedFile.FileName;  
        string filename = Path.GetFileName(filePath);

        Stream fs = FileUpload1.PostedFile.InputStream;

        BinaryReader br = new BinaryReader(fs);

        Byte[] bytes = br.ReadBytes((Int32)fs.Length);



        //insert the file into database

        string strQuery = "insert into tblFiles(Name, Data)" +

           " values (@Name, @Data)";

        SqlCommand cmd = new SqlCommand(strQuery);

        cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = filename;



        cmd.Parameters.Add("@Data", SqlDbType.Binary).Value = bytes;

        InsertUpdateData(cmd);

        lblMessage.ForeColor = System.Drawing.Color.Green;  

        lblMessage.Text = "File Uploaded Successfully";

此处,字段DATA在SQL中定义为VarBinary(max)

对于您的第二个要求,要搜索DOC内的文本,请参阅Configure and Manage Filters for Search

答案 2 :(得分:0)

谢谢我的朋友们 但我希望能够搜索我的doc文件。 doc文件可以包含表格和表格,可以包含任何类型的数据,如文本,数字和.... 图表和图片也可以像表格一样 而且我不想在一个字段中保存我的文档的路径,任何时候我需要先搜索我打开文件然后搜索。
我想将该doc文件保存到字段中并搜索字段