vs2008 winform能不能把word文档上传存进sql,然后再读取下载下来 求代码 或者方法

2025-04-01 18:37:41
推荐回答(4个)
回答1:

Word文档是图文混合数据,可以用SQL2008的FILESTREAM技术保存,数据大小不受2005的2G限制。关于FILESTREAM创建和读写(写包括追加和覆盖),详细内容见C#编程指南但尧编著清华大学出版社2011年1月出版,这里给出一个Word文件写到FILESTREAM列的代码:

private void Form1_Load(object sender, EventArgs e)

{

  string connectionString =

    "Data Source=.;Initial Catalog=AdventureWorks2008;Integrated Security=True";

  using (SqlConnection connection = new SqlConnection(connectionString))

  {

    connection.Open();

    SqlCommand command = new SqlCommand("", connection);

    command.CommandText = "select Photo.PathName(), "

      +"GET_FILESTREAM_TRANSACTION_CONTEXT () "

      +"from dbo.employees e WHERE e.EmployeeID=2";

    SqlTransaction tran = connection.BeginTransaction(IsolationLevel.ReadCommitted);

    command.Transaction = tran;

    using (SqlDataReader reader = command.ExecuteReader())

    {

      while (reader.Read())

      {

        string path = reader.GetString(0); 

        byte[] transactionContext = reader.GetSqlBytes(1).Buffer;

        //产生SqlFileStream

        Stream fileStream = new SqlFileStream(path,

          (byte[])reader.GetValue(1),

          FileAccess.ReadWrite,

          FileOptions.SequentialScan, 0);

        //读内容作为字节,写到流中

        Stream s = new FileStream(@"..\..\Word1.doc ", FileMode.Open); 

        s.CopyTo(fileStream);

        fileStream.Close();

        s.Close();

      }

    }

    tran.Commit();                        //提交事务

  }

}

以上代码只能在VS2010编译,因为VS2008的FileStream类没有CopyTo方法。二楼说不能可能是指这点。

下面的图是读取示例数据库AdventureWorks2008中的表Production.Document,它的FILESTREAM数据是Word文件。

回答2:

可以的,不过要存成二进制流的格式。在传入时,进行格式转换就可以了

回答3:

你是不是想把word文档直接存进sql sever 里,应该是保存成text字段

回答4:

不能